Coding/Python

[코드잇] 파이썬(python)으로 로또 시뮬레이션 구현하기

폴밴 2021. 9. 24. 11:37

[프로젝트] 로또 시뮬레이션

번호뽑기 : 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

결과

로또는 당첨되기 매우 어렵다