티스토리 뷰
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(" -- 축하합니다 --")
'Computer Science > 기타' 카테고리의 다른 글
Notion에서 작성한 글을 Tistory로 옮기기 / Notion2Tistory 사용하기 / 노션 글 티스토리에 옮기기 (0) | 2022.10.12 |
---|---|
퀴즈 1 (0) | 2022.05.31 |