2021. 5. 10. 18:56ㆍpython
문제
Quiz) 당신의 회사에서는 사내 체육대회를 개최합니다.
참석률을 높이기 위해 댓글 이벤트를 진행하기로 하였습니다.
댓글 작성자들 중에 추첨을 통해 1명은 노트북, 3명은 백화점 상품권을 받게 됩니다.
추첨 프로그램을 작성하시오.
조건
조건1 : 편의상 댓글은 20명이 작성하였고, 아이디는 1~20 이라고 가정
조건2 : 댓글 내용과 상관 없이 무작위로 추첨하되 중복 불가
조건3 : random 모듈의 shuffle 과 sample 을 활용
예제
(출력 예제)
-- 당첨자 발표 --
노트북당첨자 : 1
백화점 당첨자 : [2, 3, 4]
-- 축하합니다 --
(활용 예제)
from random import *
1st = [1, 2, 3, 4, 5]
print(1st)
shuffle(1st)
print(1st)
print(sample(1st, 1))
풀이
1.
가장 먼저 random을 사용하기위해서 import를 해준다.
그리고 댓글을 단 유저의 수는 20명이기 떄문에
users = range(1,21) 으로 정해준다. 여기서 print(users) 를 해보면 우리가 원하는 배열이
나오는게 아니라 range(1,21) 이 출력된다 이유는 print(type(users)) 를 해보면 나오는데
바로 type이 list가 아니기 때문이다.
2.
그래서 list로 바꿔주기 위해서
users = list(users) 를 입력하면 list로 바뀌는데 잘 바뀌었는지 확인 하기 위해
print(type(users)) 로 다시 확인해보면 list가 잘 나오는걸 확인 할 수 있다.
3.
그럼 list로 바뀐 users 를 다시 print(users) 해보면 우리가 원하는 배열인
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] 이
출력되는 것을 확인 할 수 있다.
4.
여기서 우리는 모든 수를 랜덤하게 섞어야 하므로 shuffle을 활용하여 배열을 무작위로 섞는다.
shuffle(users) 를 작성한후 print(users) 해보면 배열이 무작위로 섞인 것을 확인할 수 있다.
그리고 무작위로 섞인 인원중 4명에 당첨자를 winners라는 변수에 넣기 위해
winners = sample(users, 4) 를 작성한다.
5.
첫번째 랜덤 수는 노트북 당첨자 1명을 불러내기 위해 배열의 0번째를 호출한다.
print("노트북 당첨자 : {0}".format(winners[0]))
3명의 상품권 당첨자는 배열의 1번쨰부터 마지막 번째 까지 호출하기 위해 1: 로 호출한다.
print("상품권 당첨자 : {0}".format(winners[1:]))
정답
from random import *
users = range(1, 21)
print(users) #현재 class가 range이기 때문에 list로 변경해야함
print(type(users))
users = list(users) #Range에서 list로 변경완료
print(type(users))
print(users) #list로 변경하니까 1~20제대로 출력 ok
shuffle(users) #괄호안에 수를 무작위로 섞음
print(users)
winners = sample(users, 4) #무작위로 섞은 user중에 4개만 winners로 설정
print("-- 당첨자 발표 --")
print("치킨 당첨자 : {0}".format(winners[0])) #미지수를 항상 {0}으로 표현
print("커피 당첨자 : {0}".format(winners[1:])) #format앞에.을 꼭 하고 괄호 후 winners입력
print("-- 축하합니다 --") #겹치지 않게 0번째 수와 1번째부터 끝까지 수를 따로 출력
'python' 카테고리의 다른 글
Python 20 - Quiz (0) | 2021.05.12 |
---|---|
Python 19 - Quiz (0) | 2021.05.11 |
Python 17 - 예외처리, 에러발생시키기 (0) | 2021.05.09 |
Python 16 - pass, super (0) | 2021.05.08 |
Python 15 - 메소드 오버라이딩 (0) | 2021.05.07 |