파이썬 실전/로또 번호 생성기

파이썬 실전) 로또 번호 생성기 1. 기본 메커니즘

마리사라 2021. 2. 3. 22:57
반응형

이전에 로또 번호 추천 사이트는 허구라고 말씀드린 적이 있습니다. 그런데도 아직 유입 검색어에 로또 1등 예상번호나 1등 당첨되는 법이 있습니다. 그래서 로또 번호 추첨 사이트와 동일한 메커니즘으로 파이썬 프로그램을 만들려고 합니다.

 

2021/01/03 - [일상] - 로또 예상번호? 더 이상 속지 말자!

 

로또 예상번호? 더이상 속지말자!

여러분들은 인터넷을 보시다 보면 인기 검색어에 로또 예상번호 같은 게 올라오신 걸 보신 적이 있으실 겁니다. 아니면 광고로도 로또 1등 예상번호라고 나오는 것을 볼 수 있습니다. 그런데 이

marisara.tistory.com


1. 이론

948회 당첨 번호

로또는 1부터 45까지의 번호 중 중복 없이 6개의 번호를 선정합니다. 그리고 매주 토요일 추첨을 통해 1등 번호 6자리와 2등 번호 1개를 뽑아서 당첨자를 뽑습니다. 이것을 파이썬으로 표현하면 1부터 45까지의 리스트에서 랜덤 한 번호를 추출하는 작업을 6번 하게 되면 하나의 로또 번호 세트가 완성 될 것입니다.


2. 실전

우선 무작위로 무언가를 고르기 위해서는 random모듈이 필요합니다.

import random

 

로또 번호를 저장하는 빈 집합을 생성합니다. 집합을 사용하는 이유는 집합은 리스트와는 달리 중복을 허용하지 않기 때문입니다.

number = set()

 

이제 집합에 랜덤한 번호를 넣어보도록 하겠습니다. random에서 무작위의 정수를 만들어내는 방법은 다음과 같습니다.

random.randint(x, y)

randint함수는 int(정수) 형으로 된 랜덤 한 값을 출력하는 함수입니다. 이때 파라미터로 두가지 정수를 받으며, 각각 시작값과 끝값을 의미합니다. 이때 출력하는 값은 시작값과 끝값을 포합합니다(x<= 출력값 <=y)

 

이것을 활용하여 6자리의 무작위 수를 만드는 방법은 다음과 같습니다.

while len(number) < 6:
    number.add(random.randint(1, 45))

집합에서 인자를 더하는 함수는 add입니다. add에 randint함수를 넣어 1부터 45까지의 랜덤한 정수를 넣게 합니다. 이를 while문을 사용하여 number의 인수가 6자리가 될 때까지 반복하게 하면 됩니다.

 

파이썬에서 집합은 중복이 허용되지 않는 대신 순서가 없습니다. 그래서 숫자를 순서대로 하기 위해서는 list자료형으로 바꿔줄 필요가 있습니다.

number = list(number)
number.sort()

 

list를 통해 집합을 리스트 자료형으로 바꾸어 주고, 리스트의 sort를 통해 순서대로 정렬해줍니다.

 

print(number)

마지막으로 이를 출력해주면 됩니다.

 

이를 여러 번 반복하고 싶다면 위의 코드를 하나의 함수로 만들고, 다음과 같은 코드를 추가해주면 됩니다.

def run():
    times = int(input("시행 횟수 : "))
    for i in range(times):
    	함수이름

 

이제 결과를 확인해 보겠습니다.

5번 시행 결과

5번의 결과 동안 중복은 없으며, 오름차순으로 정렬된 것을 볼 수 있습니다.


3. 마치며

이번 강의에서는 로또 번호 생성기를 가장 단순하게 만들어 보았습니다. 다음에는 위의 프로그램을 wxPython을 이용하여 GUI로 만들어 보겠습니다.

import random


def lotto():
    number = set()
    while len(number) < 6:
        number.add(random.randint(1, 45))
    number = list(number)
    number.sort()
    print(number)


def run():
    times = int(input("시행 횟수 : "))
    for i in range(times):
        lotto()
반응형