본문 바로가기
DEV/파이썬 이론

파이썬 코딩 :: 파이썬 로또 번호 생성기 만들기

by 올커 2022. 9. 7.

 

파이썬 로또 번호 생성기 만들기


 

1. 조건

 - 파이썬 기본 문법을 활용하여 로또 번호 생성기를 짤 수 있다.

 - 로또 번호 생성기로써 조건은

   '출력횟수'를 input으로 받고, 이를 함수 변수로 받아 계산한다.


 

2. 파이썬 코드 해석

 (1) 모듈 import

 - 로또 번호는 랜덤으로 뽑아야 하기 때문에 파이썬에서 제공하는 random 모듈을 불러온다.

 - pprint 라이브러리는 리스트 결과값을 줄바꿈하여 정렬된 모습으로 출력할 수 있게 만드는 역할을 한다.

# pprint 적용 결과
'''
출력횟수 : 5
[{32, 33, 35, 42, 26, 27},
 {5, 8, 19, 27, 28, 29},
 {1, 34, 9, 14, 19, 31},
 {32, 39, 8, 44, 20, 23},
 {39, 7, 11, 19, 27, 28}]
 '''

 

 (2) 입/출력

 - 가장 아랫줄은 출력횟수 입력을 받고, 결과를 출력해주는 문장이다.

# 출력횟수 입력
lotto_numbers = lotto_number_generator(int(input("출력횟수 : ")))

# 결과 출력
pprint(lotto_numbers)

 

 (3) 함수 정의

 - 임의의 로또 번호를 뽑아주는 함수를 확인해보면 아래와 같다.

def lotto_number_generator(count):
    result = []
    if count < 1:
        print("1 이상의 값을 입력해 주세요")
        return False
        
    for _ in range(count):          # count만큼 반복해서 실행
        lotto_numbers = set()       # 중복된 숫자는 제거
        
        while len(lotto_numbers) < 6:       # lotto의 요소 갯수 6 이하일 경우 계속
            lotto_numbers.add(random.randint(1, 46))
            
        result.append(lotto_numbers)
    
    return result

 

 - 파이썬에서는 def로 함수를 선언한다. 함수에서 input으로 받는 변수 이름은 count로 지정했다.

  함수 내에 result = [] 라는 리스트 변수를 우선 만들어줘야 한다.

 - result는 함수의 명령이 완료되면  최종적으로 result에 값이 담겨 반환된다.

 - 함수 내 if문은 input받는 출력 횟수에 대한 검사를 진행한다.

   만약 출력횟수가 1보다 작다면, 잘못된 값이기 때문에 False를 반환하고 프로그램을 종료한다.

    if count < 1:
        print("1 이상의 값을 입력해 주세요")
        return False

 

 - 함수 내 for 문은 입력받은 변수 count 수만큼 반복한다.

 - 임의로 뽑은 로또번호들은 lotto_numbers라는 set에 저장된다.

   로또번호는 중복값이 없어야 하므로 set에 저장시킨다.

 - 이제 한 회당 6개의 랜덤의 번호를 while문에서 뽑는다.

   lotto_numbers는 set함수이기 때문에 중복값이 들어오면 요소의 숫자가 늘어나지 않는다.

   그러므로 lotto_numbers의 요소 숫자가 6이 되면 결과를 반환한다.

 - 숫자를 뽑을 땐 random 모듈의 randint 함수를 사용한다.

   *randint(x, y)는 x부터 y까지(y는 미포함)의 임의의 정수를 뽑아주는 함수이다.

    for _ in range(count):          # count만큼 반복해서 실행
        lotto_numbers = set()       # 중복된 숫자는 제거
        
        while len(lotto_numbers) < 6:       # lotto의 요소 갯수 6 이하일 경우 계속
            lotto_numbers.add(random.randint(1, 46))
            
        result.append(lotto_numbers)

 

   randint를 통해 생성한 값을 lotto_numbers에 add() 함수를 통해 입력해 넣는다.

 - lotto_numbers의 요소 숫자가 6개가 된 경우 result.append(lotto_numbers)를 통해 result 리스트에 삽입한다.


 

3.  파이썬 로또 번호 생성기 코드 및 출력 결과

from pprint import pprint
import random

def lotto_number_generator(count):
    result = []
    if count < 1:
        print("1 이상의 값을 입력해 주세요")
        return False
        
    for _ in range(count):          # count만큼 반복해서 실행
        lotto_numbers = set()       # 중복된 숫자는 제거
        
        while len(lotto_numbers) < 6:       # lotto의 요소 갯수 6 이하일 경우 계속
            lotto_numbers.add(random.randint(1, 46))
            
        result.append(lotto_numbers)
    
    return result

lotto_numbers = lotto_number_generator(int(input("출력횟수 : ")))
pprint(lotto_numbers)


# 출력 결과
'''
출력횟수 : 5
[{32, 33, 35, 42, 26, 27},
 {5, 8, 19, 27, 28, 29},
 {1, 34, 9, 14, 19, 31},
 {32, 39, 8, 44, 20, 23},
 {39, 7, 11, 19, 27, 28}]
 '''

 

반응형

댓글