카테고리 없음

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

0ver-grow 2021. 6. 30. 20:21
반응형

문제

일반 당첨 번호 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:]

 

반응형