[프로젝트] 로또 시뮬레이션
번호뽑기 : generate_numbers
- 정수 n을 파라미터로 받고 무작위로 1과 45 사이의 서로 다른번호 n개 뽑기, 리스트로 반환
- for ~ in ~ range 함수를 이용해 n개 요소가 있는 리스트 만들기
from random import randint
def generate_numbers(n):
rand_list = []
for number in range(n):
rand_list.append(randint(1,45)) # n번 반복할 동안 리스트에 무작위 값 추가하기
return rand_list
당첨 번호 뽑기 : draw_winning_numbers
- 일반 당첨번호 6개와 보너스 번호 1개가 포함된 리스트 반환.
- 일반 당첨번호는 정렬되어 있고, 보너스 번호는 마지막에 추가.
def draw_winning_numbers():
win_list = generate_numbers(7) # 7개의 무작위 수
bonus_list = win_list[6] # 마지막 번호를 보너스 번호로
del win_list[6]
win_list.sort() # 보너스 번호 지우고 정렬하기
win_list.append(bonus_list) # 보너스 번호 추가하기
return win_list
겹치는 번호 개수 : count_matching_numbers
- 리스트 두개를 파라미터로 받고, 요소가 몇개 겹치는지 리턴하기
def count_matching_numbers(list_1, list_2):
count = 0
for i in range(len(list_1)): # list_1의 요소를 하나씩 보기
if list_1[i] in list_2: # 만약 해당 요소가 list_2에 있다면 count 변수에 1 더하기
count +=1
return count
당첨금 확인 : check
- 다음 규칙에 따라 당첨금 결정하기일반 당첨번호 5개와 보너스 번호 1개 일치 : 5천만원4개 일치 : 5만원
- 3개 일치 : 5천원
- 5개 일치 : 100만원
- 6개 모두 일치 : 10억원
def check(numbers, winning_numbers):
count = count_matching_numbers(numbers, winning_numbers)
if count == 6:
return 1000000000
elif (count == 5) and (winning_numbers[6] in numbers):
return 50000000
elif count == 5:
return 1000000
elif count == 4:
return 50000
elif count == 3:
return 5000
합치기 (lottery.py)
from random import randint
def generate_numbers(n):
rand_list = []
for number in range(n):
rand_list.append(randint(1, 45)) # n번 반복할 동안 리스트에 무작위 값 추가하기
return rand_list
def draw_winning_numbers():
win_list = generate_numbers(7) # 7개의 무작위 수
bonus_list = win_list[6] # 마지막 번호를 보너스 번호로
del win_list[6]
win_list.sort() # 보너스 번호 지우고 정렬하기
win_list.append(bonus_list) # 보너스 번호 추가하기
return win_list
def count_matching_numbers(list_1, list_2):
count = 0
for i in range(len(list_1)): # list_1의 요소를 하나씩 보기
if list_1[i] in list_2: # 만약 해당 요소가 list_2에 있다면 count 변수에 1 더하기
count +=1
return count
def check(numbers, winning_numbers):
count = count_matching_numbers(numbers, winning_numbers)
if count == 6:
return 1000000000
elif (count == 5) and (winning_numbers[6] in numbers):
return 50000000
elif count == 5:
return 1000000
elif count == 4:
return 50000
elif count == 3:
return 5000
else:
return 0
결과
'Coding > Python' 카테고리의 다른 글
[코뮤니티] 파이썬(python) 튜플, 집합, 딕셔너리(dictionary) (0) | 2021.09.28 |
---|---|
[코드잇] 파이썬(python)으로 숫자야구 게임 시뮬레이션 구현하기 (0) | 2021.09.27 |
[코뮤니티] 블랙잭 파이썬(python)으로 구하기 (추석맞이 코딩챌린지) (0) | 2021.09.20 |
[코뮤니티] 달팽이의 정상 정복 파이썬(python)으로 구하기 (추석맞이 코딩챌린지) (0) | 2021.09.19 |
[코뮤니티] 피보나치 수열 파이썬(python)으로 구하기 (추석맞이 코딩챌린지) (0) | 2021.09.18 |