• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

인터프리터에서는 답이 안나오나요??

20.01.14 13:03 작성 조회수 106

2

import random

number = random.randint(1, 99)

print("맞춰봐 잇힝")

def input_check(msg, casting = int):

    

    while True:

        

        try: 

            

            user_input == casting(input("몇 일까요?"))

            

            return user_input

        

        except:

            

              continue

            

count = 0

chance = 10

while count < chance:

    

    count += 1

    

    user_input = input_check("몇 일까요?")

    if number == user_input:

        break

        

    elif user_input < number:

        print("{} 보다 큰 숫자입니다.".format(user_input))

        

    elif user_input > number:    

         print("{} 보다 작은 숫자입니다.".format(user_input))

            

            

if number == user_input:

    

    print("성공!, {}이 맞습니다.".format(number))

    

else:

    print("실패 정답은 {}입니다.".format(number))

자꾸 질문을 드려 죄송한데요,,, 제가 똑같이 작성한

코딩에서는 '맞춰봐 잇힝'외에는 while문이

실행이 되지 않네요. 

감사합니다. 

답변 1

답변을 작성해보세요.

0

def input_check(msg, casting = int):
    while True:
        try: 
            user_input == casting(input("몇 일까요?"))
            return user_input
        except:
             continue

일단 원래 작성하신 코드의 문제는 try 문에서 오류가 발생하여 무한으로 continue 상황이 되고 있는 내용입니다. 

def input_check(msg, casting = int):
    while True:
        try: 
            user_input == casting(input("몇 일까요?"))
            return user_input
        except Exception as e:
            print("Error  {}".format(e))
            continue

except 문에 오류의 원인을 출력해보면 위의 함수에서 continue 의 들여쓰기가 한칸 더 들여쓰기 되어있습니다. 코드를 복사 붙여넣기 하는 과정에서의 문제인지는 모르겠습니다. 파이썬에서 들여쓰기의 칸수는 아주아주 중요한 문제 입니다.  들여쓰기의 줄을 맞춰주고 다시 실행해보니 user_input == casting(...) 여기도 문제가 있습니다. 변수의 값 대입은 = 한개 입니다. == 는 비교연산자 입니다.

그리고 어떤 문제던 각 구간마다 print() 문을 찍어서 어디서 문제가 생기는지를 추적해나가는 습관을 들이시는게 좋습니다. 물론 디버깅을 해보는 더 좋은 방법도 있지만 print 문만 여기저기 찍어봐도 충분히 찾아낼 수 있는 문제들이 많습니다. 그리고 질문 계속 많이 더 주셔도 좋습니다. 죄송하실 필요 전혀 없습니다. ^^