로또 프로그램 만들기 2탄 – 번호 생성시 번호합 조건을 추가하는 방법
오늘은 로또 번호 뽑아내는 프로그램을 만들 때 조건을 하나 추가해 봅니다. 바로 번호합 조건을 추가하는 것입니다. 다음 예제 코드를 참고하세요. 어렵지 않아요. 그럼 시작해 볼까요?
첫번째로 내가 원하는 로또 번호는 번호합을 100이하인 경우에만 출력하게 만들어 봅니다. 생성한 로또 번호합을 저장할 변수 sum를 초기값으로 0을 줍니다. 그리고 while 반복문을 사용하여 조건으로 100이하인 경우에 반복문을 탈출하도고록 처리합니다. 그리고 첫번째 시간에서 사용했던 random.sample()함수를 사용하여 로또 번호를 생성하면 결과값으로 리스트 타입으로 반환합니다. 즉, my_number는 리스트 타입의 자료형이 됩니다. 6개의 숫자를 담은 my_number 리스트를 반복문인 for문을 사용하여 6개의 숫자를 모두 sum에 저장합니다. 그리고 난 후 조건문인 if문을 사용하여 sum 합이 100이하인경우에 while문을 강제적으로 빠져나가도록 처리를 합니다.
import random
# 로또 번호합을 저장할 변수 sum
sum = 0
#반복문 처리
while sum <= 100:
my_number = random.sample(range(1, 46), 6)
for item in my_number:
sum = sum + item
if sum <= 100:
break
else:
sum = 0
#작은 숫자부터 정렬(오름차순)
my_number.sort()
# 뽑은 번호 6개 출력하기
print(f'{my_number}' + f' 번호합: {sum}')
[프로그램(스크립트) 실행결과]
[9, 14, 15, 16, 17, 25] 번호합: 96
두번째로 이번에는 구간를 정해볼까요?
while문의 조건을 0보다 작거나 같은 경우로 조건을 줍니다. while문을 태우기 위해서 이렇게 합니다. nsum 의 초기값으 0으로 주었음으로 그렇게 처리합니다. 그렇지 않으면 while문 안쪽의 코드는 접근하지 않게됨으로 아무런 값도 출력할 수 없습니다. 반복문 안에서 번호의 합이 100보다 크고 120보다 작은 조건을 주었습니다. (if 100 < nsum < 120:)
import random
#뽑은 번호를 담은 리스트 선언
my_number = []
# 로또 번호합을 저장할 변수 sum
nsum = 0
while nsum <= 0:
my_number = random.sample(range(1, 46), 6)
for item in my_number:
nsum = nsum + item
print(f'번호합: {nsum}')
if 100 < nsum < 120:
break
else:
nsum = 0
# 작은 숫자부터 정렬(오름차순)
my_number.sort()
# 뽑은 번호 6개 출력하기
print(f'{my_number}' + f' 번호합: {nsum}')
[실행결과]
3번만에 조건에 부합하는 결과를 찾았음으로 로또 번호를 출력하였습니다.
번호합: 137
번호합: 72
번호합: 101
[1, 2, 7, 13, 33, 45] 번호합: 101
한번더 실행해볼까요? 이번에는 15번만에 조건에 맞는 번호합 108를 찾았습니다.
번호합: 144
번호합: 143
번호합: 162
번호합: 169
번호합: 142
번호합: 152
번호합: 132
번호합: 147
번호합: 121
번호합: 145
번호합: 159
번호합: 145
번호합: 135
번호합: 174
번호합: 108
[2, 7, 16, 22, 23, 38] 번호합: 108
생각보다 어렵지 않죠? 다음시간에는 홀짝 비율 조건을 추가하는 방법에 대해 알에볼게요.