파이썬 로또 번호 생성기 만들기
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}]
'''
'DEV > 파이썬 이론' 카테고리의 다른 글
파이썬 코딩 :: 파이썬 문법(반복문, 모듈)_TIL#08 (0) | 2022.09.07 |
---|---|
파이썬 코딩 :: 파이썬 숫자 야구 게임 만들기 (0) | 2022.09.07 |
파이썬 코딩 :: 파이썬 문법, 계산기 만들기_TIL#07 (0) | 2022.09.06 |
파이썬 코딩 :: 파이썬 외부 패키지 (0) | 2022.09.06 |
파이썬 코딩 :: 파이썬 패키지(Package) (0) | 2022.09.06 |
댓글