[Quiz 04] 2.4 함수(list; set)
작성자 : kim2kie
(2023-03-04)
조회수 : 12955
[참조]
.관련 동영상
https://youtu.be/yhoa5OIjEYY
Q)
당신의 학교는 파이썬 코딩 대회를 주최할 예정이다.
참석률을 높이기 위해 댓글 이벤트를 진행하기로 하였다.
댓글 작성자들 중에 추첨을 통해 1명은 치킨, 3명은 커피 쿠폰을 받게 된다.
추첨 프로그램을 작성하라.
조건1: 댓글은 20명이 작성하였고 아이디는 1~20이라고 가정한다.
조건2: 무작위로 추첨하고, 중복은 불가하다.
조건3: random 모듈의 shuffle과 sample을 활용한다.
.출력 문장(형식):
-- 당첨자 발표 --
치킨 당첨자: [O]
커피 당첨자: [O, O, O]
-- 축하합니다 --
.출력 문장(예시):
-- 당첨자 발표 --
치킨 당첨자: [1]
커피 당첨자: [2, 3, 4]
-- 축하합니다 --
A) 해설
random.shuffle() 함수는 리스트 데이터를 무작위로 섞어주는 역할을 한다.
random.choices()은 리스트 내에서 원하는 개수의 값을 뽑는다.
random.choices(population, k=sample_size)과
random.sample(population, k=sample_size)의 차이점은
choices는 모집단(population)에서 요소를 중복하여 선택할 수 있지만,
sampledms 모집단(population)에서 요소를 중복하여 선택할 수 없다.
import random
lst = [1,2,3,4,5]
print(lst) # 원본 리스트
random.shuffle(lst) # 리스트를 뒤섞기
print(lst) # 섞은 후 리스트
print(random.choices(lst, k=1)) # 리스트 내에서 1개를 무작위로 뽑기
C) 코드: "quiz-04.py"
import random
users = list(range(1, 21)) # range(1,21) 객체를 list로 만든다.
# [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
random.shuffle(users) # 생성된 list를 무작위 섞는다(shuffling).
chicken_winner = random.sample(users, k=1) # 치킨 당첨자 1명 추첨
remain_users = set(users) - set(chicken_winner) # 전체 집합 - 치킨 당첨자 집합
coffee_winners = random.sample(list(remain_users), k=3) # 남은 19명 중에서 3명 추첨
print("-- 당첨자 발표 --")
print("치킨 당첨자 : {0}".format(chicken_winner))
print("커피 당첨자 : {0}".format(coffee_winners))
print("-- 축하합니다 --")
Q-Report)
당신의 학번은 202301234이다. 사이트 별로 비밀번호를 만들어주는 프로그램을 작성하라.
규칙1: 두 점(.)의 가운데 부분만 잘라서(슬라이싱) 사용. 예: https://www.naver.com → naver
규칙2: 남은 글자 중 처음 세 자리(예: nav) + 학번 끝 네자리(예: 1234) + '!'로 구성
.생성된 비밀번호(예시):
http://www.naver.com → nav1234!
http://www.daum.net → dau1234!
http://www.google.com → goo1234!
http://www.youtube.com → you1234!
.출력 문장(형식):
OOO의 비밀번호는 OOO입니다.
.출력 문장(예시):
http://www.naver.com의 비밀번호는 nav1234!입니다.