[python] 4. 로또 예상번호 뽑기(함수, for문, if문)

mu-eng·2023년 1월 5일
1
post-thumbnail

유튜브 스타트코딩 파이썬 기초 강의 듣다가 만난
예제문제가 너무 어려워서 글 하나 파서 팬다..

💡 Q. 로또 예상번호 뽑기 프로그램 생성하기

    1. 로또 번호 6개를 생성
    1. 로또 번호는 1~45까지의 랜덤한 번호
    1. 6개의 숫자 모두 달라야 함
    1. 로또 번호 생성함수를 작성하고 사용한다.
# 1. 랜덤번호를 뽑는 함수를 만들자
import random # 랜덤 값 뽑는 함수 쓰려면 무조건 (random 모듈 참고)

def getRandomNumber():
    number = random.randint(1, 45)
    return number # 값 출력하려면 print(getRandomNumber())
# 2. 랜덤번호 6개를 뽑자
import random

def getRandomNumber():
    number = random.randint(1, 45)
    return number

for i in range(6):
    random_number = getRandomNumber()
    print(random_number)

###############################################
# 하지만! 위 코드는 중복값이 발생할 수 있다.
# 2-2. 중복값이 발생하지 않는 6개를 뽑자
import random

def getRandomNumber():
    number = random.randint(1, 45)
    return number

lotto = []

for i in range(6):
    random_number = getRandomNumber()
    if random_number not in lotto: # 랜덤값이 리스트 lotto안에 없으면
        lotto.append(random_number)  # 얘도 좀 껴줘라~

print(lotto)
#############################################
# 하지만! 위 코드는 중복값은 리스트 lotto에 안 껴주고 딱 6번만 반복함
# 리스트 lotto가 5, 4, 3, ... 1개가 나올 수도 있어서 역시 틀림 ㅠ
# 결국 '중복값이 없는' '6개의 로또 번호'를 '나올 때 까지' 돌려야 하니까
# => while문으로 접근해야함
# 2-3. while을 사용해보았다.
import random

def getRandomNumber():
    number = random.randint(1, 45)
    return number

lotto = []

while True:
    random_number = getRandomNumber()
    if random_number not in lotto:
        lotto.append(random_number)

print(lotto)

# 일케 되면, 리스트 lotto의 길이가 무한정으로 늘어나겠찌?
# while문을 끝낼 탈출 조건을 걸어줘야겠다.
# 2-4. if문 조건을 걸어 break조건을 만들어준다.
import random

def getRandomNumber():
    number = random.randint(1, 45)
    return number

lotto = []
count = 0 # 횟수를 지정해줄 변수

while True:
    if count > 5: # 0, 1, 2, 3, 4, 5까지 총 6개의 숫자가 뽑히겠다.
        break
    random_number = getRandomNumber()
    if random_number not in lotto:
        lotto.append(random_number)

print(lotto)

###################################
# 근데 왜 또 에러가 나징? ㅠㅠ
# 이유는 얘도 탈출 조건이 충족이 안되고 계~ 속 lotto 리스트가 커지기만 함

💡 정답

import random

def getRandomNumber():
    number = random.randint(1, 45)
    return number # 1. 함수를 맹글어 줘요

lotto = []
count = 0

while True: # 중복이 없는 6개의 숫자가 나올 때 까지 계속 반복해라
    if count > 5:
        break # 6개의 중복 없는 숫자가 나오면 탈출 시켜줄게
    random_number = getRandomNumber()
    if random_number not in lotto: # 뽑은 랜덤숫자가 중복아니면
        lotto.append(random_number) # 리스트에 좀 껴줘라
        count += 1 # 탈출 시켜줘야하니까 다 충족했음 count하나 높여줘라

print(lotto)

뿌앵 어려웡
이거 하나를 이렇게 오래 잡고있을 일이냐 흑흑

profile
[무엥일기] 무엥,,, 내가 머쨍이 개발자가 될 수 이쓰까,,,

0개의 댓글