인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

Ice Blue님의 프로필 이미지
Ice Blue

작성한 질문수

남박사의 파이썬 기초부터 실전 100% 활용

예외 처리 try except 및 with 문

자꾸 3아웃이라고 나와요

작성

·

162

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 형으로 일치 시켜주시면 됩니다.

Ice Blue님의 프로필 이미지
Ice Blue

작성한 질문수

질문하기