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 |