728x90
'''
숫자야구게임
컴퓨터에서 생성된 세자리 숫자를 맞히는 게임
추측한 숫자 중에 자리까지 맞은 숫자가 한 개 있으면 1strike,
추측한 숫자 중에 하나가 생성된 숫자에 있는 경우 1ball
각 자리 숫자는 중복될 수 없음. 기회는 일단 10번으로
'''
import random
# 컴퓨터로 부터 한 자리 숫자 3개 중복 없이 뽑아오기
answer = []
i = 0
while i < 3:
answertemp = random.randrange(10)
if answertemp in answer:
continue
else:
answer.append(answertemp)
i = i + 1
print(answer) # 확인용
print("☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★")
print("숫자야구게임".center(50))
print("☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★")
print("< 종료하려면, 언제든지 'q'를 입력하세요. >".center(50))
print("")
# 모든 결과를 저장할 리스트 생성
numbersTotal = []
strikeTotal = []
ballTotal = []
def quit(typ):
if typ == 'q':
print("*"*55)
exit("게임을 종료합니다.".center(55))
def numInput(digit, numberList):
while True:
num = input("{}번째 자리 숫자 입력: ".format(digit))
quit(num)
if num.isdigit():
num = int(num)
if num >= 10:
print("※ 한 자리 숫자를 입력해 주세요.")
continue
else:
if num in numberList:
print("※ 숫자가 중복되었습니다. 다시 입력해주세요.")
continue
else:
numberList.append(num)
break
else:
print("※ 한 자리 숫자를 입력해 주세요.")
continue
for rnd in range(1, 11):
print("▷▶▷▶▷▶▷▶▷▶▷▶▷▶▷▶▷▶▷▶▷▶▷▶ {}회 ◁◀◁◀◁◀◁◀◁◀◁◀◁◀◁◀◁◀◁◀◁◀◁◀".format(rnd))
numbers = [] # 각 판마다 입력한 숫자 세 개를 저장
# 첫번째 자리 숫자 입력 받기
numInput(1, numbers)
# 두번째 자리 숫자 입력 받기
numInput(2, numbers)
# 세번째 자리 숫자 입력 받기
numInput(3, numbers)
# 입력받은 세 숫자 판정
strike = 0
ball = 0
for i in range(3): # numbers에 인덱스로 접근해서 확인
if numbers[i] in answer: # 정답 숫자 3개 중에 numbers[i]가 있는지?
if i == answer.index(numbers[i]): # 있으면서 인덱스도 같으면 strike
strike = strike + 1
else: # 있지만 인덱스는 같지 않으면 ball
ball = ball + 1
print("입력한 숫자: {} {} {}".format(numbers[0], numbers[1], numbers[2]))
print("판정 결과: STRIKE( {} ) BALL( {} )".format(strike, ball))
print("")
# strike가 3이면 정답, 프로그램 종료
if strike == 3:
print("☆★☆★☆★☆★☆★☆★삼진 아웃!!☆★☆★☆★☆★☆★☆★☆★")
print("☆★☆★☆★☆★☆★정답입니다!!@!@!@!#@!!☆★☆★☆★☆★☆★")
print("정 답 : {} {} {}".format(answer[0], answer[1], answer[2]))
exit()
# 매 회 결과를 저장
numbersTotal.append(numbers)
strikeTotal.append(strike)
ballTotal.append(ball)
# 매 회마다 이전에 진행한 게임들 결과 출력
print("○○○○○○ 아래 결과들을 잘 조합해보세요 ○○○○○○")
for i in range(1, rnd+1):
print(" {}회 : {} {} {}".format(i, numbersTotal[i-1][0], numbersTotal[i-1][1], numbersTotal[i-1][2]), end="")
print(" => STRIKE( {} ) BALL( {} )".format(strikeTotal[i-1], ballTotal[i-1]))
print("")
# 기회 모두 사용하면 정답 출력 해주기
print("기회를 모두 사용하였습니다.")
print("정답은 {} {} {}".format(answer[0], answer[1], answer[2]))
728x90
'Programmer's Diary > Python' 카테고리의 다른 글
[Python] 2022-02-10 개인 Project _ DB연습_농구스코어DB (0) | 2022.02.12 |
---|---|
[Python] 2022-02-08 개인 Project _ 로또 시뮬레이션 게임(수정1) (0) | 2022.02.12 |
[Python] 2022-02-07 개인 Project _ 로또 시뮬레이션 게임 (0) | 2022.02.12 |
[Python] 2022-01-30 개인 Project _ 재미로 만든 로또 번호 추첨 프로그램(수정1) (0) | 2022.02.12 |
[Python] 2022-01-27 개인 Project _ 재미로 만든 로또 번호 추첨 프로그램 (0) | 2022.02.12 |