파이썬으로 로또 당첨번호를 랜덤으로 추출하고 내가 입력한 번호와 같은지 확인하는 프로그램을 만들었다. 파이썬의 활용도는 무궁무진 하며 쉽다.
파이썬으로는 중복이나 코드 짜는게 너무 쉽고 편하게 되어있다. list 에 포함되어 있는지 쉽게 접근할 수 있는 in , 포함되지 않았는지는 not in . 크아.. 이렇게 간결하게 코드를 짤 수 있다니.
부분적으로 간단하게 설명하겠다. 그리고 풀코드는 맨 아래에 있으니 그것을 보고 싶은 분들은 맨아래로 스크롤 하자.
총 4부분정도로 나눌 수 있다.
- 당첨번호 추출
- 내번호 입력
- 내번호가 당첨번호에 포함되어있는지 판단
- 탈락 or 등수 표기
1. 당첨번호 추출
# 당첨번호를 랜덤으로 추출 하는 부분.
import random
lotto = []
while True:
num = random.randint(1,45)
if num not in lotto:
lotto.append(num)
if len(lotto) == 6:
break;
lotto라는 리스트를 생성한다.
while 무한반복 하면서
random 으로 1~ 45 숫자를 추출한다.
lotto 리스트에 포함되어있지 않다면 lotto 리스트에 추가한다.
lotto 리스트에 6개의 번호가 들어갔다면 while 탈출
로또 당첨번호 리스트 완료
2.내번호 입력
#("내 로또번호 띄어쓰기로 입력 :")
inputStr = input("내 로또번호 띄어쓰기로 6개 입력 :").split(" ")
mine=[]
for n in inputStr:
mine.append( int(n))
내 로또 번호를 띄어쓰기 (스페이스) 한칸 기준으로 inputStr 리스트 에 넣는다. split(" ") 함수 이용
이는 문자열 이므로 int형으로 변환해서 저장할 mine 리스트를 만든다.
inputStr의 값들을 int 변환해서 mine 에 넣는다.
이로써 로또 당첨번호와 내가 입력한 번호 모으기 완료
3.내번호가 당첨번호에 포함되어있는지 판단
#내번호가 lotto 당첨번호 리스트에 포함되어 있냐 체크.
same = 0
for myN in mine:
if myN in lotto:
same +=1
내 입력번호가 당첨번호에 있을때 증가시킬 same 변수 생성.
for문으로 내 입력번호 리스트를 돌면서 값 가져옴 = myN
in 으로 내 입력번호가 당첨번호에 포함되었는지 체크
포함되어있으면 same 변수 +1씩 증가
내 입력번호가 당첨번호에 몇개 포함되어있는지 체크 완료
4.탈락 or 등수 표기
#same 에 따라 인덱싱해서 등수 표기.
score = [0,6,5,4,3,2,1]
if same ==0 :
print("탈락")
else:
print( f" {same}개 맞음, {score[same]} 등 당첨!")
same에 따라 인덱싱할 score 리스트 생성
same 이 0인 경우 당첨번호에 포함된게 없으므로 탈락
same 에는 당첨번호와 몇개가 겹치는지 들어있다.
예를들어
- same == 1인 경우 1개 당첨 = score[1] = 6 = 6등
- same == 2인 경우 2개 당첨 = score[2] = 5 = 5등
- ..
- same == 6인 경우 6개 당첨 = score[6] = 1 = 1등
그러므로 score 리스트에 same 을 인덱싱 키로 쓰면 각 등수가 나오게 작업했다.
테스트 몇번 해보자.
야호~~ 일단 당첨번호 체크도 잘되고 에러 없이 잘 돌아간다!! 작업 끝?!?
그러나....
버그다!! 버그!! BUG..
전부 작업하고 테스트 몇번 해보니 자잘한 버그들과 개선사항이 눈에 보인다.
- 내번호 중복 입력 가능
- 내번호 6개 이상 입력 가능 ㅋㅋㅋ ㅠㅠ
- 당첨번호가 1 이라고 가정할때, 내 입력번호를 1만 6개 중복 입력하면 무조건 1등되는 버그 ㅋㅋ
- 6등,5등은 원래 상금이 없지 않나? ㅎ
- 당첨번호와 내가 입력한 번호를 정렬하면 더 보기 편할것 같다.
업그레이드는 나중에 돈받고 하겠다. ㅎㅎ
그럼 여기까지! 간단하게 파이썬으로 로또를 프로그래밍 해봤다. 테스트 하기 쉽게 도중에 당첨번호와 내 입력번호를 print 하며 눈으로 확인해보는 것도 좋다. 디버깅 해보는것은 더더 좋고!
파이썬은 무궁무진 하다. 배우기도 쉽고 편하다. 유후~ 오늘도 이렇게 파이썬 포스팅 하나 끝냈네. 문의사항은 댓글로, 공감 눌러주시면 대댓글 답변 달아드림! ㅎ
그럼 오늘도 즐 파이썬!
Full Code 는 요기부터.
# 당첨번호를 랜덤으로 추출 하는 부분.
import random
lotto = []
while True:
num = random.randint(1,45)
if num not in lotto:
lotto.append(num)
if len(lotto) == 6:
break;
#당첨번호 미리보기 테스트 코드
#print("당첨번호=", lotto)
#("내 로또번호 띄어쓰기로 입력 :")
inputStr = input("내 로또번호 띄어쓰기로 6개 입력 :").split(" ")
mine=[]
for n in inputStr:
mine.append( int(n))
#내번호가 lotto 당첨번호 리스트에 포함되어 있냐 체크.
same = 0
for myN in mine:
if myN in lotto:
same +=1
#당첨번호와 내번호가 같은지 눈으로 확인하는 테스트 코드
#print("당첨번호=", lotto)
#print("내번호 = ", mine)
#same 에 따라 인덱싱해서 등수 표기.
score = [0,6,5,4,3,2,1]
if same ==0 :
print("탈락")
else:
print( f" {same}개 맞음, {score[same]} 등 당첨!")
파이썬 가위바위보 게임도 만들어볼래??