작성 툴
◎ IDLE Shell 3.12.3
프로그램 명
◎ 로또
설계
◎ 프로그램이 1부터 100까지의 숫자 중 6자리를 랜덤으로 뽑는다.
⇨ 중복은 존재하지 않아야한다.
◎ 등수별 금액 1000원부터 1억까지 배당한다.
⇨ 등수는 1등에서 5등까지이다.
⇨ 1등 > 1억원
⇨ 2등 > 5000만원
⇨ 3등 > 500만원
⇨ 4등 > 5만원
⇨ 5등 > 1000원
⇨ 등수별 금액을 사용자에게 보여주어야한다.
◎ 사용자에게는 선택권이 주어진다.
⇨ 1. 자동
⇨ 2. 수동
⇨ 이외의 경우 다시 입력을 받는다.
◎ 자동의 경우 프로그램에서 임의로 6개의 숫자를 뽑는다.
⇨ 중복은 존재하지 않아야한다.
◎ 수동의 경우 사용자에게 6자리의 숫자를 한 자리씩 입력 받는다.
⇨ 중복일 경우 다시 입력을 받는다.
⇨ 정수로만 입력받아야한다.
⇨ 정수 이외의 입력이 올 경우, 그 자리의 정수를 다시 입력받는다.
◎ 결과 처리
⇨ 프로그램이 뽑은 숫자를 알려준다.
⇨ 사용자가 입력한 숫자를 알려준다.
⇨ 일치하는 숫자와 갯수를 알려준다.
⇨ 등수를 알려주고 받을 금액을 알려준다
코드
import random
import time
def lotto():
print(time.strftime('로또 구매일: ' + '%x', time.localtime()))
## 프로그램이 1부터 100까지의 숫자 중 6자리를 랜덤으로 뽑는다.
sysNumList = random.sample(range(1,100), 6)
## 등수별 금액 배정
priceList = [[1,100000000],[2,50000000],[3,5000000],[4,50000],[5,1000], [6,0]]
## 로또 금액 공지
print('==========================')
print('등수별 금액')
print('1등 1억원')
print('2등 5000만원')
print('3등 500만원')
print('4등 5만원')
print('5등 1000원')
print('==========================')
print('')
## 사용자에게 선택권
print('복권의 종류를 입력해주세요.')
print('1. 자동')
print('2. 수동')
print('')
## 사용자 지정 번호 리스트
userNumList = []
while True:
## 루프 카운트 변수
i = 1
## 문자열 대비
try:
choice = int(input('입력 >>'))
except ValueError:
print('옳바른 입력이 아닙니다. 다시 입력해주세요.')
continue
## 자동
if choice == 1:
## 자동 선택 => 랜덤 6숫자
userNumList = random.sample(range(1,100), 6)
## 수동
elif choice == 2:
while True:
## 7번째에서 루프 탈출
if i == 7:
break
## 문자열 대비
try:
choice = int(input(str(i) + '번째 번호를 입력해주세요. >>'))
except ValueError:
print('정수를 입력해주세요.')
continue
## 입력이 중복인 경우
if choice in userNumList:
print('이미 입력하신 숫자입니다.')
continue
## 입력이 정수가 아닌 경우
if isinstance(choice, int) == False:
print('정수를 입력해주세요.')
continue
## 입력값 리스트에 저장
userNumList.append(choice)
## 루프 카운트 1 증가
i = i + 1
## 수동 자동 이외
else:
print('옳바른 입력이 아닙니다. 다시 입력해주세요.')
continue
## 최상위 로프 탈
break
print('')
print('당첨 번호는' + str(sysNumList) + '입니다.')
print('')
print('고객님의 번호는' + str(userNumList) + '입니다.')
print('')
## 프로그램과 사용자의 숫자 교집합
sameNumList = set(sysNumList) & set(userNumList)
## 일치하는 번호가 없는 경우
if int(len(sameNumList)) == 0:
print('일치하는 번호가 없습니다.')
## 일치하는 번호가 있는 경우
else:
print('일치하는 번호는 ' + str(sameNumList) + '로 ' + str(len(sameNumList)) + '개의 숫자가 일치합니다.')
print('')
for list in priceList:
if int(list[0]) == 7 - int(len(sameNumList)):
print('등수:' + str(list[0]) + ' 금액: ' + str(list[1]))
에러
TypeError: Random.sample() missing 1 required positional argument: 'k'
◎ 요구되는 인자값이 충족되지 않았을 때 발생하는 에러

TypeError: unsupported operand type(s) for +: 'int' and 'str'
◎ 문자열이 아닌 값과 문자열을 합치려고 했을 때 발생하는 에러
◎ 문자열이 아닌 값은 문자열로 변환해 주어야한다.

UnboundLocalError: cannot access local variable 'list' where it is not associated with a value
◎ 로컬 변수를 할당하기 전에 참조했을 때 발생하는 에러

'언어 > Python' 카테고리의 다른 글
[언어] <Python> 예외처리 (0) | 2024.05.13 |
---|---|
[언어] <Python> 파일 입출력 (0) | 2024.05.09 |
[언어] <Python> 표준 모듈과 외부 모듈 (0) | 2024.05.03 |
[언어] <Python> 사용자 정의 함수 (0) | 2024.05.02 |
[언어] <Python> 내장함수 (0) | 2024.05.01 |