Study/PYTHON

[나도코딩] 파이썬 강의_퀴즈4

chanzae 2021. 10. 12. 16:01

[내가 쓴 코드]

from random import *
command = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] #조건 1
shuffle(command) #조건2
chicken = sample(command,1)
command = set(command)
command.remove(chicken)
coffee = sample(command,3)

print('''
-- 당청자 발표 ---
치킨 당첨자 : '''+chicken+'''
커피 당첨자 : '''+coffee+'''
-- 축하합니다 --''')

 

[에러 문구]

Traceback (most recent call last):
  File "c:\Users\ejcej\Desktop\python tutorial\practice.py", line 29, in <module>
    command.remove(chicken)
TypeError: unhashable type: 'list'

 

 

[나도코딩이 쓴 코드]

from random import *
users = range(1,21) # 1부터 20까지 숫자 생성
users = list(users)
shuffle(users)
winners = sample(users, 4) # 4명 중 1명은 치킨, 3명은 커피

print("-- 당첨자 발표 --")
print("치킨 당첨자 : {0}".format(winners[0]))
print("커피 당첨자 : {0}".format(winners[1:]))
print("-- 축하합니다 --")

 

[해결]

1. 치킨 1명을 뽑고 리스트에서 제거 하는 것보다 당첨자 4명을 뽑아 치킨 1명을 뽑는 게 더 편리함.

2. 변수가 항상 변하기 때문에(sample 함수 때문에) remove 특정 불가 > 에러메시지 발생 원인으로 추정

3. 처음 쓴 코딩에서 당첨자 발표를 변수형식으로 입력할 경우 str()으로 감싸줘야 함. 

4. 문자열 포맷 활용해서 간편하게 입력 가능

 

[다시 쓴 코드]

from random import *
command = range(1,21)
command = list(command)
shuffle(command)
winners = sample(command, 4)

print("-- 당첨자 발표 --")
print("치킨 당첨자 : {0}".format(winners[0]))
print("커피 당첨자 : {0}".format(winners[1:]))
print("-- 축하합니다 --")

 

 

 

*이 글은 유튜브 나도코딩의 강의를 듣고 작성한 강의노트입니다.*

반응형