본문 바로가기
Python

4. 자료구조 퀴즈

by 녤 2023. 2. 3.

Q. 당신의 학교에서는 파이썬 코딩 대회를 주최합니다. 참석률을 높이기 위해 댓글 이벤트를 진행하기로 하였습니다. 

댓글 작성자 중에 추첨을 통해 1명은 치킨, 3명은 커피 쿠폰을 받게 됩니다. 

추첨 프로그램을 작성하시오. 

 

조건 1: 편의상 댓글은 20명이 작성하였고 아이디는 1~20 이라고 가정

조건 2: 댓글 내용과 상관 없이 무작위로 추첨하되 중복 불가

조건 3: random 모듈의 shuffle과 sample을 활용

 

 # -*- encoding: euc-kr-*-
from random import *

event_list = []
#댓글 이벤트 참여자 아이디 생성
for i in range (20):
    event_list.append(i)

#이벤트 당첨자를 뽑기 위해 아이디를 무작위로 섞음
shuffle(event_list)

#당첨자를 뽑음
lucky = sample(event_list, 4)


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

 

원래는 치킨 당첨자를 뽑고, 중복 방지를 위해 해당 원소를 리스트에서 제거한 후 커피 당첨자를 뽑으려 했는데..sample이 원소를 뽑기 보단 그냥 인덱스를 뽑는 것.....같더라구요..? 

 

그래서 그냥 randint로 치킨 당첨자를 한명 뽑은 후, 치킨 가져간 아이디를 리스트에서 제거하고 커피는 sample로 뽑아봄

 

 # -*- encoding: euc-kr-*-
from random import *

event_list = []
#댓글 이벤트 참여자 아이디 생성
for i in range (20):
    event_list.append(i)

#0~20 중에 랜덤으로 치킨 당첨자 뽑기
chicken = randint(0,20)
#중복 당첨을 제외하기 위해 chicken 당첨자의 아이디를 제거
event_list.remove(chicken)

#coffee 당첨자 뽑기
coffee = sample(event_list, 3)

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

 

sample 사용 안하고도 뽑아보고 싶어져서 함 해봄..

 

 # -*- encoding: euc-kr-*-
from random import *

event_list = []
#댓글 이벤트 참여자 아이디 생성
for i in range (20):
    event_list.append(i)

#0~20 중에 랜덤으로 치킨 당첨자 뽑기
chicken = randint(1,20)

#coffee 당첨자 뽑기
coffee = []
while len(coffee) != 3:
    randnum = randint(1, 20)
    if  randnum not in coffee and randnum != chicken:
            coffee.append(randnum)

   

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

 

 

 

 

'Python' 카테고리의 다른 글

자료구조  (0) 2023.02.03
파이썬 응용하기 2  (0) 2022.08.31
파이썬 데이터의 비밀  (0) 2022.08.31
사전  (0) 2022.08.29
for 반복문  (0) 2022.08.29