본문 바로가기
카테고리 없음

[코드잇] 프로젝트: 로또 시뮬레이션 | 03. 로또 시뮬레이션: 당첨 번호 뽑기

by 0ver-grow 2021. 6. 30.
반응형

문제

일반 당첨 번호 6개와 보너스 번호 1개가 포함된 리스트를 리턴합니다. 일반 당첨 번호 6개는 정렬되어 있어야 하고, 보너스 번호는 마지막에 추가하면 됩니다.

 

예를 들어서 아래 코드를 실행하면,

print(draw_winning_numbers())

 

이런 결과가 나올 수 있습니다.

[4, 12, 14, 28, 40, 41, 6]

 

기존 코드

 

내가 작성한 코드 (틀림) : 조잡함, 하나하나 선언 정의함

from random import randint

def generate_numbers(n):
    new_list = []
    while len(new_list) < n :
        num = randint(1,45)
        if num not in new_list :
            new_list.append(num)
    return new_list

def draw_winning_numbers():
    normal_numbers, final_numbers = [], []
    numbers = generate_numbers(7)
    normal_numbers = sorted(numbers[:6]) # 마지막 추가 번호 제외하고 오름차순 정렬
    final_numbers = normal_numbers + numbers[6]
    return final_numbers
    
print(draw_winning_numbers())

'''
Traceback (most recent call last):
  File "main.py", line 18, in <module>
    print(draw_winning_numbers())
  File "main.py", line 15, in draw_winning_numbers
    final_numbers = normal_numbers + numbers[6]
TypeError: can only concatenate list (not "int") to list
'''

 

 

해답 코드

from random import randint


def generate_numbers(n):
    numbers = []

    while len(numbers) < n:
        new_number = randint(1, 45)
        if new_number not in numbers:
            numbers.append(new_number)

    return numbers


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

 

반응형