로또 프로그램 만들기 5탄 – 특정 번호 제외하는 방법
이번 시간에는 파이썬 언어로 로또 번호 조합을 생성 후 리턴 받을 때 특정 번호를 제외해서 번호 조합을 생성하는 방법에 대해 알아봅니다. 가령, 1부터 10까지의 번호는 번호 조합시 제외해보는 코드를 작성해봅니다. 이번 코딩의 핵심은 중첩 반복문을 이해하는데 있습니다. 먼저 제외할 번호 대상을 리스트에 담습니다.
# 특정 숫자 제외하기
except_number = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
그런 다음 생선된 6개의 번호와 제외번호를 비교해봅니다. my_numer 리스트에 생성된 번호 6개가 있습니다. 그리고 except_number리스트에 제외번호 10개가 들어있습니다. 6개의 번호와 10개의 번호를 모두 비교해야합니다. 조건문을 사용하여 하나하나 비교하는 삽질코드와 하드코딩을 피하기위해 우리는 반복문을 사용합니다. for문 2개를 사용함으로써 처리가 가능합니다. 첫번째 for문은 6번 반복될 것입니다. 그리고 2번째 for문은 6*10 해서 60번 반복하게 됩니다.
두번째 반복문에서 if문을 사용하여 뽑힌 번호 조합과 제외 대상번호를 비교해서 체크합니다. 그래서 같은 번호가 없을 경우에는 출력이 가능하도록 isNonExist 변수에 False값을 처리해줍니다.
for item in my_number:
for exceptNum in except_number:
if item == exceptNum:
다음은 전체 코드 입니다.
import random
# 뽑은 번호를 담은 리스트 선언
my_number = []
# 로또 번호합을 저장할 변수 sum
nsum = 0
# 특정 숫자 제외하기
except_number = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 제외번호 미포함여부
isNonExist = True
for num in range(10):
while isNonExist:
my_number = random.sample(range(1, 46), 6)
for item in my_number:
for exceptNum in except_number:
if item == exceptNum:
isNonExist = False
break
if isNonExist:
# 작은 숫자부터 정렬(오름차순)
my_number.sort()
# 뽑은 번호 6개 출력하기
print(f'{my_number}' + f'미존재? : {isNonExist}')
break
else:
isNonExist = True
[실행결과]
C:UsersilikeAppDataLocalProgramsPythonPython39python.exe C:/python/Workspace/main.py
[19, 30, 31, 35, 40, 43]미존재? : True
[13, 29, 33, 37, 40, 41]미존재? : True
[11, 14, 15, 19, 27, 42]미존재? : True
[23, 25, 32, 41, 43, 45]미존재? : True
[22, 23, 24, 29, 35, 36]미존재? : True
[12, 22, 25, 35, 36, 44]미존재? : True
[14, 15, 18, 25, 34, 42]미존재? : True
[15, 16, 19, 22, 27, 42]미존재? : True
[16, 24, 25, 32, 41, 44]미존재? : True
[18, 19, 22, 28, 30, 34]미존재? : True
Process finished with exit code 0
어때요? 반복문의 원리가 이해 되시나요?? 그럼 다음시간에 만나요~~ 바이바이~
[이전 글]
로또 프로그램 만들기 4탄 - 여러개의 번호 조합을 리턴 받는 방법
로또 프로그램 만들기 3탄 - 홀짝 비율 조건 추가 하는 방법
로또 프로그램 만들기 2탄 - 번호 생성시 번호합 조건을 추가하는 방법