[파이썬 퀴즈!] 로또처럼 행운의 숫자를 랜덤으로 뽑아보기

지난번에 파이썬으로 랜덤함수(random())를 이용해서 난수를 출력하는 것을 해봤는데요. 오늘은 예제문제를 통해서 랜덤함수를 복습해보겠습니다. 여러가지 숫자중에서 랜덤으로 하나를 뽑아내는 프로그램을 만들어보는 예제를 풀어보겠습니다.

 

파이썬 예제 : 랜덤으로 행운의 숫자 뽑아보기

 

예제)

1-100까지 숫자가 적힌 카드 중에서 자동으로 행운의 숫자 카드를 추첨하는 프로그램을 만들어봅시다.

조건 1 : 랜덤으로 카드를 정해야 합니다.

조건 2 : 50번까지의 카드에서만 하나를 뽑아주세요.

조건 3: 1-5번은 별도 추첨을 할 것이기 때문에 제외하도록 합니다.

 

출력 예제 :

 

################################

당신의 행운의 카드는 * 입니다. 축하합니다!

################################

 

이런 문제들은 이벤트 추첨 같은 것에서 많이 사용하는 방법이죠. 가령 1~3등은 여러가지 조건을 충족해서 최고인 사람을 순서대로 추첨한다거나 하고 나머지는 참가자한 모든 사람 중에서 일부를 뽑아 경품을 제공하는 이벤트 같은 것을 생각하면 될 것 같습니다.

 

 

풀이)

숫자가 1부터 100까지 적혀 있는 카드인데요.. 50번까지만 해당되는 것이니 범위는 1부터 50번입니다. 그리고 조건 1에서 카드를 랜덤하게 뽑아야한다고 했으니까 함수는 random()을 사용하도록 하면 되겠죠? 그리고 조건 3에서 1-5번은 별도 추첨으로 제외한다고 했으니까 범위는 6-50번이 되겠습니다. 

 

랜덤으로 숫자를 뽑아오기 위해서는 random 모듈이 필요하니 먼저 random을 import 해줘야 합니다. 그런데 지난번에 print(random())을 사용하면 0.0 부터 0.1 사이의 숫자만 나왔고 소숫점 이하자리를 안보이게 하려면 int()를 사용한다고 했습니다. 그래서 1부터 나오게 하고 소수점 이하는 안나오게 처리를 하려면 print(int(random() *10) +1) 와 같이 해줘야 했습니다. 위의 예제대로라면 print(int(random() *50)+1)과 같이 해주면 되겠죠? 그런데 난수를 가져오면서도 좀 더 쉽게 가져오는 함수가 있습니다. randrange()randint()입니다.

 

randrange()

randrange(1, 50)과 같이 사용합니다. 그래서 randrange(1, 50)이라고 하면 1부터 50미만의 숫자 중에서 랜덤하게 숫자를 뽑아줍니다. random()보다 훨씬 간단해졌죠? 첫번째 숫자는 포함되고 마지막 숫자는 포함되지 않습니다. 그래서 위의 예제를 해결하기 위해 50번까지 포함시키려면 randrange(1, 51)이라고 해주면 됩니다.

 

randint()

randint(1, 50)과 같이 사용하면 되는데요. 이건  양쪽 모두가 포함됩니다. 즉 1부터 50이하에 해당됩니다.

 

미만이 헷갈리면 randrange() 대신 randint()를 사용하는 것이 더 편하겠죠? 숫자를 잘 대입하면 결과는 동일합니다.

그래서 아래의 코드와 같이 작성을 해봤더니 

from random import *
card = randrange(1, 51)
print("################################")
print("당신의 행운의 카드는" + card + "입니다. 축하합니다!")
print("################################")

이렇게 해보니 에러가 났습니다. 에러메시지를 살펴보면 TypeError: can only concatenate str (not "int") to str 이라고 되어 있습니다.

 

 

card라는 변수에서 가져 오는 것은 숫자이긴 하지만 print()내에서 사용하려면 "문자"로 출력이 되어야 합니다. 그래서 이부분을 str()로 감싸줘야 에러가 나지 않아요. 이것은 지난번 비주얼스튜디오코드로 파이썬 시작하기 (1)을 참고하시면 되겠습니다.

2020/08/11 - [IT/파이썬] - 비주얼스튜디오코드로 파이썬 시작하기 (1)

 

비주얼스튜디오코드로 파이썬 시작하기 (1)

지난번까지 파이썬으로 정수계산을 해보고 함수라는 것도 잠깐이나마 맛보는 시간을 가졌는데요. 이제 Visual Studio Code(VSC) 비주얼스튜디오 코드를 이용해서 파이썬 공부를 본격적으로 시작해보�

sopress.tistory.com

수정한 결과물은 아래와 같습니다.

 

from random import *
card = randrange(1, 51)
print("################################")
print("당신의 행운의 카드는" + str(card) + "입니다. 축하합니다!")
print("################################")

 

한번 공부했던 부분들이 나오는 예제이지만 헷갈리고 잊어버리는 경우도 있고 그럴 거예요. 반복해서 예제들을 다루다보면 익숙해질 거라 생각됩니다. 오늘은 random으로 숫자를 뽑아보는 복습시간이었는데요. 추가로  random()보다 편리한 randrange()와 randint()도 함께 살펴봤습니다. 이것을 활용하면 특정기간의 날짜를 랜덤으로 뽑아보는 것도 가능합니다. 가령 1일 부터 25일까지 중에서 모임날짜를 랜덤으로 정하는 것도 가능하겠습니다.

 

고맙습니다.

반응형

댓글

Designed by JB FACTORY