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("-- 축하합니다 --")
*이 글은 유튜브 나도코딩의 강의를 듣고 작성한 강의노트입니다.*
반응형