티스토리 뷰

Computer Science/기타

퀴즈 2

inee0727 2022. 6. 5. 18:59
Quiz) 당신의 학교에서는 파이썬 코딩 대회를 주최합니다.
참석률을 높이기 위해 댓글 이벤트를 진행하기로 하였습니다.
댓글 작성자들 중에 추첨을 통해 1명은 치킨, 3명은 커피 쿠폰을 받게 됩니다.
추첨 프로그램을 작성하시오.

조건1 : 편의상 댓글은 20명이 작성하였고 아이디는 1~20이라고 가정
조건2 : 댓글 내용과 상관 없이 무작위로 추첨하되 중복은 불가
조건3 : random 모듈의 shuffle 과 sample 을 활용

(출력 예제)
 -- 당첨자 발표 --
치킨 당첨자 : 1
커피 당첨자 : [2, 3, 4]
 -- 축하합니다 --

 

▶ shuffle() 함수

 - 섞어주는 역할을 하는 함수

 - 리스트 안의 데이터들을 무작위로 섞어줌

 

▶sample() 

 - 리스트 내에서 원하는 갯수의 값을 뽑는 동작 수행

 - 한 번에 원하는 갯수만큼의 번호를 중복 없이 뽑을 수 있음

 

 

▼ 해설 보기

더보기

우선 random 모듈을 사용해야 하니 코드 가장 윗줄에 import 를 먼저 입력한다.

from random import *

 

조건1 의 1~20 에 해당하는 아이디를 만들려면 다음과 같이 입력 할 수 있다.

users = range(1, 21) # 1 부터 21 직전까지의 연속된 숫자 모음

 

shuffle() 은 리스트에 대해서만 사용이 가능한데 range() 를 통해 만들어진 데이터는 리스트 형태가 아니기 때문에 리스트 형태로 변환해준다.

users = range(1, 21)
users = list(users) # range 를 list 로 변환
shuffle(users)

 

리스트를 섞었으니, 이번에는 추첨을 한다.

sample() 을 이용해 처음부터 4명을 뽑은 다음 그 중 1명은 치킨, 나머지 3명은 커피 당첨자로 한다.

winners = sample(users, 4) # users 리스트에서 중복 없이 4명을 추첨

 

슬라이싱을 이용하여 winners 에서 첫 번째 아이디는 치킨, 나머지는 커피 당첨자로 설정한다.

print(" -- 당첨자 발표 -- ")
print("치킨 당첨자 : {0}".format(winners[0])) # 0 번째 인덱스 (1명)
print("커피 당첨자 : {0}".format(winners[1:])) # 1 번째부터 마지막까지 슬라이싱 (3명)
print(" -- 축하합니다 --")

 

전체 코드는 아래와 같다.

from random import *

users = range(1, 21)
users = list(users)
shuffle(users)

winners = sample(users, 4)

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

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함