소숫점 입력해야하는 질문에 문자열 입력시 자체 에러처리

조회수 724회

제가 소숫점 둘째자리까지 입력하는 코드를 만드는데

문자열을 입력하거나 소수점이 잘못입력되거나 그러면 print("다시 입력해.")를 출력하고 다시 소숫점 둘째자리까지 입력하라는 문구를 뜨게 하려합니다.

그런데 그 입력수에 대한 재입력처리를 못하겠습니다.

x= float(input("숫자를 입력해."))

while x != float:

    print("다시입력해")

이런 식으로 하려하는데 while문에서 자꾸 에러가 나서 진행이 안됩니다. 제발 혜안좀 빌려주세요,..

2 답변

  • 에러가 난 걸 활용하셔야 해요. 다음을 실행하면 발생하는 익셉션을 캐치하셔야 합니다. (사실 복잡하게 들어가자면 숫자가 아닌 뭔가를 사용자가 입력하려는 사건 자체는 당연히 발생하는 일이라서 예외로 간주하면 안 되는 거긴 하지만...)

    x = float('문자')
    

    while 제어에 관련해서는 딱 네 줄만 힌트를 드리겠습니다.

    x_is_float = False
    while x_is_float is False:
        if 어쩌구저쩌구 :
            x_is_float = True
    
  • while문에서 에러가 나는게 아니라 x에서 에러가 나는 겁니다.

    숫자를 입력했을 때엔 에러가 발생하지 않았을 겁니다.

    float 명령을 수행하면서 생기는 문제인데, 숫자가 아닌 문자를 float시키면 에러가 발생합니다.

    저라면 다음과 같이 x를 입력받은 다음, 이것을 float하는데 성공하면 루프를 종료하고, 아니라면 에러가 발생할 테니 예외 처리를 이용할 겁니다.

    while 1:
        x = input('숫자를 입력해 주세요 : ')
        try:
            y = float(x)
            break
        except:
            print('숫자만 입력해 주세요.')
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)