로또 프로그램 만들기 6탄 – 특정 번호를 포함 하는 번호 조합을 생성하는 방법
오늘은 파이썬(Python)언어로 특정 번호를 포함하는 로또 번호 생성방법에 대해 알아봅니다. 가령, 나는 3번과 7번은 포함하고 나머지 4개의 번호에 대해서 랜덤으로 뽑는 경우를 생각해볼 수 있습니다. 오프라인에서 로또용지에 번호 3번과 7번만 마킹하고 자동에 마킹하면 로또 구입 용지에 반자동으로 찍혀 나오는 원리와 같습니다. 그럼 시작해볼까요? 첫번째 시간에 했던 코드를 응용합니다. 아래 코드는 첫 시간에 했던 6개의 번호를 뽑는 코드입니다.
import random
#뽑은 번호를 담은 리스트 선언
my_number = []
#반복문으로 6개뽑을때까지만 반복처리
while len(my_number) < 6:
a = random.randint(1, 45)
# 중복되는 번호가 아닌 경우에만 추가
if a not in my_number:
my_number.append(a)
my_number.sort()
# 뽑은 번호 6개 출력하기
print(f'{my_number}')
위 코드를 보시면 6개의 번호를 뽑는 과정에 기존에 뽑은 번호와 비교해서 같지 않으면 리스트에 추가하는 구조로 되어있습니다. 이 코드를 사용하여 특정번호 포함하는 코드를 만들어봅니다. 원리는 간단합니다. my_number에 포함하고 싶은 번호를 append함수를 사용하여 추가합니다. 그리고 난 후 my_number 리스트의 사이즈를 체크 후 나머지 뽑아야할 갯수 만큼만 반복문을 돌려서 처리해주면 됩니다. 아래 코드를 볼까요?
포함하고 자하는 번호로 7번과 20번을 추가해주었습니다.
import random
#뽑은 번호를 담은 리스트 선언
my_number = []
#포함하고자 하는 번호를 추가.
my_number.append(7)
my_number.append(20)
# 반복문으로 6개뽑을때까지만 반복처리
while len(my_number) < 6:
a = random.randint(1, 45)
# 중복되는 번호가 아닌 경우에만 추가
if a not in my_number:
my_number.append(a)
my_number.sort()
# 뽑은 번호 6개 출력하기
print(f'{my_number}')
[실행결과]
[1, 7, 20, 25, 29, 41]
포함할 번호를 추가할 때 append함수를 사용하지 않고 리스트를 처음에 선언할 때 초기값으로 넣어주어도 됩니다. 아래 코드처럼요. 3개의 포함해야할 번호를 추가해주었습니다. 실행결과를 보면 3개의 번호를 포함 후 나머지 3개의 번호를 뽑은 것을 확인할 수 있습니다.
my_number = [7, 20, 30]
import random
#뽑은 번호를 담은 리스트 선언
my_number = [7, 20, 30]
# 반복문으로 6개뽑을때까지만 반복처리
while len(my_number) < 6:
a = random.randint(1, 45)
# 중복되는 번호가 아닌 경우에만 추가
if a not in my_number:
my_number.append(a)
my_number.sort()
# 뽑은 번호 6개 출력하기
print(f'{my_number}')
[실행결과]
[1, 7, 20, 30, 38, 45]
7,20,30번을 포함하는 로또번호 조합을 반복문인 for문을 사용하여 5개 정도만 뽑아볼까요? 실행결과를 보세요? 동일한 번호로 5개의 조합이 생성되었어요. 왜그런 것일까요? 정답은 아래쪽에 있습니다.
import random
#뽑은 번호를 담은 리스트 선언
my_number = [7, 20, 30]
for num in range(5):
# 반복문으로 6개뽑을때까지만 반복처리
while len(my_number) < 6:
a = random.randint(1, 45)
# 중복되는 번호가 아닌 경우에만 추가
if a not in my_number:
my_number.append(a)
my_number.sort()
# 뽑은 번호 6개 출력하기
print(f'{my_number}')
[실행결과]
[7, 12, 20, 30, 34, 35]
[7, 12, 20, 30, 34, 35]
[7, 12, 20, 30, 34, 35]
[7, 12, 20, 30, 34, 35]
[7, 12, 20, 30, 34, 35]
이유를 찾으셨나요? 그 이유는 my_number의 값을 초기화 하지않은 상태에서 재사용했기 때문입니다.
for문 안쪽에 my_number 리스트를 초기화 해주는 코드가 한 줄 들어가야합니다. 실행결과를 보니 모두 다른 조합으로 5개의 로또 번호가 생성되었습니다.
import random
#뽑은 번호를 담은 리스트 선언
my_number = [7, 20, 30]
for num in range(5):
my_number = [7, 20, 30]
# 반복문으로 6개뽑을때까지만 반복처리
while len(my_number) < 6:
a = random.randint(1, 45)
# 중복되는 번호가 아닌 경우에만 추가
if a not in my_number:
my_number.append(a)
my_number.sort()
# 뽑은 번호 6개 출력하기
print(f'{my_number}')
[실행결과]
[7, 13, 20, 23, 30, 38]
[7, 10, 20, 30, 35, 36]
[1, 3, 6, 7, 20, 30]
[7, 20, 25, 26, 30, 35]
[7, 14, 20, 26, 30, 44]
오늘은 여기까지!!! 다음주에 또 만나요!!
[이전 글]
- 로또 프로그램 만들기 5탄 – 특정 번호 제외하는 방법
- 로또 프로그램 만들기 4탄 – 여러개의 번호 조합을 리턴 받는 방법
- 로또 프로그램 만들기 3탄 – 홀짝 비율 조건 추가 하는 방법
- 로또 프로그램 만들기 2탄 – 번호 생성시 번호합 조건을 추가하는 방법
- 파이썬 언어로 로또 번호를 뽑아내는 프로그램 만들기