인프런 커뮤니티 질문&답변
자꾸 3아웃이라고 나와요
작성
·
177
2
import random
import os
os.system("cls")
print("*" * 60)
print("숫자야구게임 시작합니다~~!!!")
print("*" * 60)
numbers = []
number = random.randint(0,9)
while len(numbers) != 3:
for i in range(3):
if number in numbers:
number = random.randint(0,9)
else:
numbers.append(number)
def input_check(msg,casting = int):
while True:
try:
user_input = casting(input("숫자 3개 입력하시오>"))
return str(user_input)
except:
continue
strike = 0
ball = 0
while strike < 3:
strike = 0
ball = 0
user_input = input_check("숫자 3개를 입력하시오>")
if len(user_input) != 3:
continue
for i in range(0,3):
for j in range(0,3):
if numbers[i] == user_input[j] and i == j:
strike += 1
if numbers[i] == user_input[j] and i != j:
ball += 1
output = ""
if strike == 0 and ball == 0:
print("3아웃!!!")
else:
if strike > 0:
output += "{} 스트라이크".format(strike)
if ball > 0:
output += "{} 볼".format(ball)
print(output)
print(numbers)
박사님..
왜 이렇게 자꾸 "3아웃"이라고 나오는지 모르겠어요..ㅠㅜㅜ
답변 1
1
남박사
지식공유자
작성하신 코드중에 보시면
if numbers[i] == user_input[j] and i == j:
strike += 1
if numbers[i] == user_input[j] and i != j:
ball += 1
이렇게 표기되어있는데 numbers[i] 의 값은 int 형태이고
사용자에게 입력받은 user_intput[j] 값은 str 형태 입니다.
그래서 int 형과 str 형을 비교하니 항상 false 가 되기 때문에 그런 결과가 나옵니다.
if number[i] == int(user_input[j]) and i == j:
이런식으로 형식을 int 형으로 일치 시켜주시면 됩니다.





