2016-06-12 3 views
-5

파이썬 콘솔에서이 코드를 실행할 때 메시지가 계속 잘못 표시되는 이유는 무엇입니까?파이썬 형식 변수가 잘못되었습니다. 메시지

(type(a) != int) and (int == False) 

int == False는 항상 false가 될 것입니다 : A의 I 5.

a = raw_input("type a number here: ") 

if type(a) != int == False: 

    print ("Input verified!") 

elif type(a) != float == False: 

    print ("Input verified!") 

else: 

    print ("Wrong!") 
+1

당신이'경우 isinstance (A를 확인하려고 참조 : 당신은 float()를 사용하여 명시 적으로 변환하고 정수 또는 부동 소수점 숫자 유효하지 않은 입력을 처리하기 위해 예외 처리를 사용할 필요가 (int, float))'? 왜냐하면 ** 항상 ** str **입니다. – jonrsharpe

답변

4

type(a) != int == False체인 비교, 그리고으로 평가 입력합니다.

부울 테스트에서 == False 또는 == True을 사용하지 마십시오. 그냥 직접 테스트하거나 not을 사용하십시오. 또한, 특정 유형 테스트 isinstance()를 사용

if isinstance(a, int): 
    # ... 

그러나, raw_input() 유형 str의 객체, 항상를 반환합니다. 형식이 int 또는 float 인 개체는 생성되지 않습니다.

try: 
    result = float(a) 
    print 'Input verified' 
except ValueError: 
    print 'Sorry, I need a number' 

는 또한 Asking the user for input until they give a valid response

관련 문제