TIL | 파이썬 시뮬레이션#1 (feat. 코로나 😢 )

vel.Ash·2022년 4월 1일
0
post-thumbnail

코로나 확진으로 인한 요양으로 오랜만에 컴백 😢

앞으로 다시 열심히 달리기~~! 머리가 띵하지만 곧 회복되기를..!


 로또 시뮬레이션

<생각 및 정리>

1.일단 번호 6개 나오게 만들기

중복 없애기가 힘들어...왜 중복이 안없어질까? ..

import random

# 무작위 번호 추출 함수
def generate_numbers(n):
    i = 0
    random_numbers = []
    while i < n:
        number = random.randint(1, 45)
        check = print(number in random_numbers)
        random_numbers.append(number)

        if check == True:
            del random_numbers[i]
            print(random_numbers)

        i += 1
    return random_numbers

print(generate_numbers(6))

—> 안된다... 아예 넣었다 뺐다 하지 말고 조건 만족하면 넣는 것으로 하기, 간단!

import random

# 무작위 번호 추출 함수
def generate_numbers(n):   # n 개의 랜덤 상수
    random_numbers = []
    while len(random_numbers) < n:
        number = random.randint(1, 45)
        
        if number not in random_numbers:
            random_numbers.append(number)
    return random_numbers

print(generate_numbers(6))

2.일반 당첨번호 6개와 보너스 번호 1개 포함된 리스트 리턴하기(일반 번호 정렬, 보너스 안정렬)

generate_nambers활용해서 번호 6개일때 정렬하도록 조건식 추가!

# 당첨 번호 추출 함수
def draw_winning_numbers():   
    winning_numbers = []
    while len(winning_numbers) <= 6:  # 7 개의 랜덤 상수
        number = random.randint(1, 45)
        
        if len(winning_numbers) == 6:  # 일반 당첨번호 정렬 
            winning_numbers.sort()
        
        if number not in winning_numbers:
            winning_numbers.append(number)
            
    return winning_numbers

print(draw_winning_numbers())

**어차피 general 자체가 랜덤이라서 출력시마다 바뀌니까 함수활용하기

def draw_winning_numbers():
    winning_numbers = generate_numbers(7)
    return sorted(winning_numbers[:6]) + winning_numbers[6:]

print(draw_winning_numbers())

3.두개리스트 사이에 겹치는 번호 개수를 리턴하기(for문 사용하기→ 1번째 리스트 넣고, 2번째 리스트 안에 있는 지 찾기)

3-1

def count_matching_numbers(list_1, list_2):
    count = 0 
    for i in list_1:
        check = i in list_2
        
        if check == True:
            count += 1
    return count

# 테스트
print(count_matching_numbers([2, 7, 11, 14, 25, 40], [2, 11, 13, 14, 30, 35]))
print(count_matching_numbers([2, 7, 11, 14, 25, 40], [14]))

3-2.

def count_matching_numbers(list_1, list_2):
    count = 0 
    for i in list_1:
        if i in list_2:
            count += 1
    return count

4.당첨금 확인하기

-내가 뽑은 번호 6개와 일반 당첨 번호 6개 모두 일치 (10억 원)
-내가 뽑은 번호 5개와 일반 당첨 번호 5개 일치, 그리고 내 번호 1개와 보너스 번호 일치 (5천만 원)
-내가 뽑은 번호 5개와 일반 당첨 번호 5개 일치 (100만 원)
-내가 뽑은 번호 4개와 일반 당첨 번호 4개 일치 (5만 원)
-내가 뽑은 번호 3개와 일반 당첨 번호 3개 일치 (5천 원)
일단 일반번호에서 일치하는 개수, 보너스 번호에서 일치하는 개수 확인(두 개의 변수 생성)→ 확인하여 if 문으로 출력

# 당첨 숫자와 일치하는 숫자의 갯수 추출 함수 
def count_matching_numbers(numbers, winning_numbers):
    count = 0 
    for i in numbers:
        check = i in winning_numbers
        
        if check == True:
            count += 1
    return count

def check(numbers, winning_numbers):
    general_numbers = count_matching_numbers(numbers, winning_numbers[:6])
    bonus_numbers = count_matching_numbers(numbers, winning_numbers[6:])
    if general_numbers == 6: 
        return "1억원 당첨"
    elif general_numbers == 5 and bonus_numbers == 1:
        return "5천만원 당첨"
    elif general_numbers == 5:
        return "100만원 당첨"
    elif general_numbers == 4:
        return "5만원 당첨"
    elif general_numbers == 3:
        return "5천원 당첨"
    else:
        return "꽝!"
profile
코린이의 개발공부

0개의 댓글