250x250
Notice
Recent Posts
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
관리 메뉴

일상 코딩

[python] 로또 (lotto) 출력 함수 작성 및 로또 게임 일반화 함수 작성, 중복 숫자 제한 코드 본문

Python/로또 (lotto)

[python] 로또 (lotto) 출력 함수 작성 및 로또 게임 일반화 함수 작성, 중복 숫자 제한 코드

polarcompass 2022. 11. 22. 18:32
728x90
1 ~ 45 까지 6 가지 숫자 선정하는 방식
def lotto():
    select_number = 6
    lotto_number = [ i for i in range(1,46) ]
    random.shuffle(lotto_number)
    start = random.randrange(0,39)
    end = start + select_number
    return sorted(lotto_number[start:end])
    
if __name__ == "__main__":    
    for i in range(10):
        lotto_str = ''
        lotto_nums = lotto()
        for j in lotto_nums: lotto_str += f"{j:2d}, "
        print(f"{i+1:02d}회 로또 번호: {lotto_str[:-2]}")

'''
<결과값 예시>
01회 로또 번호: 16, 19, 23, 25, 36, 41
02회 로또 번호:  4, 12, 14, 21, 26, 40
03회 로또 번호: 10, 13, 27, 31, 35, 38
04회 로또 번호: 15, 19, 28, 29, 33, 43
05회 로또 번호:  8, 15, 26, 27, 36, 38
06회 로또 번호:  5, 16, 33, 37, 42, 45
07회 로또 번호:  1,  6, 23, 33, 35, 36
08회 로또 번호:  4,  9, 13, 23, 28, 35
09회 로또 번호:  3,  4,  7, 19, 32, 44
10회 로또 번호:  3,  7, 21, 27, 28, 34
'''

 

임의의 숫자 범위 및 임의의 가지 수로 선정하는 방식
def lotto(start_num, end_num, select_num):
    lotto_number = [ i for i in range(start_num, end_num + 1) ]
    random.shuffle(lotto_number) # 값을 반환하지 않고 lotto_number 리스트에 그대로 적용해버림
    start = random.randrange(0,( (end_num - start_num + 1) - 1 ) - select_num )
    end = start + select_num
    return sorted(lotto_number[start:end])

if __name__ == "__main__":    
for i in range(10):
	lotto_str = ''
    lotto_nums = lotto(1,53,7)
    for j in lotto_nums: lotto_str += f"{j:2d}, "
    print(f"{i+1:02d}회 로또 번호: {lotto_str[:-2]}")
    # 02d -> 2자리 10진수이고 1~9까지는 앞을 0으로 채우라는 의미

'''
<결과값 예시>
01회 로또 번호:  1, 16, 18, 31, 33, 46, 53
02회 로또 번호:  2,  9, 11, 17, 38, 46, 52
03회 로또 번호: 10, 16, 21, 22, 24, 35, 44
04회 로또 번호:  1, 10, 11, 20, 45, 52, 53
05회 로또 번호:  4, 18, 29, 35, 36, 39, 42
06회 로또 번호: 10, 22, 35, 37, 41, 42, 44
07회 로또 번호:  2,  4, 10, 13, 17, 46, 52
08회 로또 번호:  1, 11, 23, 30, 34, 50, 52
09회 로또 번호:  9, 14, 16, 18, 38, 42, 53
10회 로또 번호:  3,  8, 15, 34, 39, 40, 45
'''

 

728x90