[코드잇] 파이썬 응용하기
[미니 프로젝트]
본 프로젝트는 모듈, 사용자 정의 함수 개념을 적용해 로또 시뮬레이션을 해보는 것으로 코드잇 파이썬 응용하기 과정에 나와 있다.
generate_numbers(n)
from random import randint
def generate_numbers(n):
n_list = [] #리턴할 리스트 생성
i = 0
while i < n:
num = randint(1,45)
if num not in n_list: #리스트에 숫자가 없는 경우 리스트에 추가
n_list.append(num)
i += 1
return n_list
테스트 결과
draw_winning_numbers()
from random import randint
def draw_winning_numbers():
winning_list = []
i = 0
while i < 7:
num = randint(1,45)
if num not in winning_list:
winning_list.append(num)
i += 1
if i == 6: #당첨 번호 6개 정렬
winning_list.sort()
return winning_list
테스트 결과
++ 간단하게 만들기
generate_numbers()
함수를 사용해 더 간단한 함수 생성
def draw_winning_numbers():
winning_numbers = generate_numbers(7)
return sorted(winning_numbers[:6]) + winning_numbers[6:]
count_matching_numbers(numbers, winning_numbers)
def count_matching_numbers(numbers, winning_numbers):
count = 0
for i in winning_numbers:
if i in numbers:
count += 1
return count
테스트 코드
check(numbers, winning_numbers)
def check(numbers, winning_numbers):
matching_cnt = count_matching_numbers(numbers, winning_numbers[:-1]) #보너스 번호를 제외하고 번호 비교
if matching_cnt == 6:
prize_money = 1000000000
elif matching_cnt == 5 and winning_numbers[6] in numbers: #5개 + 보너스 번호 일치
prize_money = 50000000
elif matching_cnt == 5:
prize_money = 1000000
elif matching_cnt == 4:
prize_money = 50000
elif matching_cnt == 3:
prize_money = 5000
else:
prize_money = 0
return prize_money
코드잇 풀이로는 보너스 번호도 count_matching_numbers(numbers, winning_numbers)
함수를 사용해 보너스 번호 개수를 세서 1인 경우 2등이 되도록 했다.
테스트 코드
lottery.py
파일을 만들어 앞에서 작성한 함수를 넣고 모듈로 활용lottery_driver.py
파일 다운 후 실행이 파이썬 코드는 lottery.py모듈에 있는 함수들을 사용해서 로또 100장 시뮬레이션을 한 후, lottery.html이라는 파일을 생성합니다. 그러기 위해서는 우선 lottery.py와 lottery_driver.py를 같은 폴더에 넣어 주세요. 그리고 나서 lottery_driver.py 파일을 실행해 보세요. 그러면 아래 이미지에 나온 것처럼, lottery.html 파일이 생성될 것입니다. - 코드잇
html로 구현하는 부분도 직접해보고 싶었지만 아직 프론트엔드 지식은 많이 부족해서 일단은 제공해준 코드로 생성된 html을 확인했다.
과연 결과는...
💩🤚 여기 있어요!
놀랍게도 100번을 실행했는데 당첨이 하나도 없다ㅋㅋㅋ
html을 내가 만들지는 않았지만 파이썬 코드를 활용해서 이렇게 화면으로 보여주니까 확실히 그냥 파이썬 코드를 실행하는 것보다 훨씬 재미있다. 추가로 넣고 싶은 기능도 떠오르고, 개발 공부도 해서 언젠간 구현 해봐야지..!
+추가하고 싶은 기능