본문 바로가기

카테고리 없음

파이썬 로또게임 lotto 만들기 : 당첨 확인 까지

파이썬으로 로또 당첨번호를 랜덤으로 추출하고 내가 입력한 번호와 같은지 확인하는 프로그램을 만들었다. 파이썬의 활용도는 무궁무진 하며 쉽다. 

 

파이썬으로는 중복이나 코드 짜는게 너무 쉽고 편하게 되어있다. list 에 포함되어 있는지 쉽게 접근할 수 있는 in , 포함되지 않았는지는 not in . 크아.. 이렇게 간결하게 코드를 짤 수 있다니.

 

부분적으로 간단하게 설명하겠다. 그리고 풀코드는 맨 아래에 있으니 그것을 보고 싶은 분들은 맨아래로 스크롤 하자. 

 

총 4부분정도로 나눌 수 있다.

  1. 당첨번호 추출
  2. 내번호 입력
  3. 내번호가 당첨번호에 포함되어있는지 판단
  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 에는 당첨번호와 몇개가 겹치는지 들어있다.

예를들어

  1. same == 1인 경우 1개 당첨 = score[1] = 6 = 6등
  2. same == 2인 경우 2개 당첨 = score[2] = 5 = 5등
  3. ..
  4. same == 6인 경우 6개 당첨 = score[6] = 1 = 1등 

그러므로 score 리스트에 same 을 인덱싱 키로 쓰면 각 등수가 나오게 작업했다.

 

테스트 몇번 해보자.

파이썬-로또-테스트1
와우 첫시도에 3개나 맞았다!!
파이썬-로또-테스트2
제일 많은 경우. 왜 한개도 안맞을까?ㅋㅋ
파이썬-로또-테스트3
만세! 1등이다.

야호~~ 일단 당첨번호 체크도 잘되고 에러 없이 잘 돌아간다!!  작업 끝?!?

 

 

그러나....

 

 

버그다!! 버그!! 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]} 등 당첨!")

 

 

파이썬 가위바위보 게임도 만들어볼래??

https://welcomec.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EA%B0%80%EC%9C%84%EB%B0%94%EC%9C%84%EB%B3%B4-%EA%B2%8C%EC%9E%84-%EB%A7%8C%EB%93%A4%EB%A9%B0-%EB%B0%B0%EC%9A%B0%EB%8A%94-python

 

파이썬 가위바위보 게임 만들며 배우는 python

간단히 랜덤 함수와 딕셔너리, 리스트를 이용해서 가위바위보 게임을 만들어봤다. 파이썬 배울수록 강력한 코드라는 생각이 든다. 러닝 바이 두잉 파이썬ㅎ 그렇게 어렵지 않은 간단한 코드였

welcomec.tistory.com

 

 

파이썬-로또게임-풀소스코드-썸네일