2017-05-18 1 views
0

파이썬을 배우고 코딩하는 것이 새로운데 ... 입력이 숫자인지 아닌지 확인하려고했습니다.사용자 입력이 파이썬에서 int인지 확인하는 이유는 무엇입니까?

a=(raw_input("Amount:")) 

try: 
    int(a) 
except ValueError: 
    try: 
     float(a) 
    except ValueError: 
     print "This is not a number" 
     a=0 
if a==0: 
    a=0 
else: 
    print a 
    #Do stuff 

https://stackoverflow.com/a/26451234/8032074

내 질문은, 정확히 말까지 if a==0에서 무슨 일이 일어나고 있는지 : I는 다음과 같습니다 삼년 전에 비활성 계정에서 좋은 답을 찾았나요? 나는 그것을 꺼내면 숫자가 아닐지라도 모든 입력이 인쇄되게 될 것이라고 말할 수 있습니다.

하지만 숫자가 아닌 항목이 인쇄되지 않도록하는 코드는 정확히 무엇입니까?

감사합니다.

+1

숫자로 '0'을 입력 해 보았습니까? –

+6

당신이 발견 한 것은 전혀 훌륭한 대답이 아닙니다. 그것은'a == 0 : a = 0'이 누군가 혼란스럽게 작성된 것처럼 보입니다. – khelwood

+0

예외에서 a = 0을 제거합니다. 그것은 변수 –

답변

0

'=='연산자는 변수가 가리키는 객체가 동일한 지 여부를 테스트합니다. 이 경우 '0'은 상수입니다. 당신이 경우 약간 더 의미가 다시 쓰기 : a=0 0으로 a을 설정할 수 있기 때문에 부동 소수점이나 int로도 있다면

a=(raw_input("Amount:")) 

not_a_number = 0; 

try: 
    int(a) 
except ValueError: 
    try: 
     float(a) 
    except ValueError: 
     print "This is not a number" 
     a=not_a_number 
if a==not_a_number: 
    a=0 
else: 
    print a 
    #Do stuff 
+1

이것은 코드의 나머지 부분에서 유효하지 않은 입력이 0과 동일하게 취급된다고 가정 할 때만 작동합니다 (금액 인 경우 의미가 있음). 그렇지 않으면'not_a_number = "잘못된 입력"을해야합니다. – Joooeey

+0

알았습니다! 도움이됩니다. 고마워요! – ebnhawk

2

의미가 있습니다. 그 다음에 a == 0a이 0인지 확인합니다. 그렇지 않은 경우 else이면 입력을 인쇄합니다. try...except...else 구문을 사용하여 더 나은 버전 : 입력이없는 경우 여기

a=raw_input("Amount:") 

try: 
    float(a) 
except ValueError: 
    print "This is not a number" 
else: 
    print a 
    #Do stuff 

재미 버전 :

import re 
a = raw_input("Amount:") 
if re.match("-?\d*[\.|\d]\d*", a): 
    print a 
else: 
    print "This is not a number" 
+0

여전히 'int'_and_ to float으로 캐스팅하는 것이 무엇인지 확실하지 않습니다. – khelwood

+0

입력이 1.1 (float)이면 int (a)는 예외를 발생 시키지만 float (a)는 @khelwood가되지 않습니다 – abccd

+1

어쨌든'float'을 시도 할 때 'int'로 귀찮게할까요? ? – khelwood

1

마지막 if 성명의 요점은 아무것도 출력하지 있는지 확인하는 것입니다입니다 번호.

입력이 숫자가 아닌 경우 try/except은 입력이 0으로 설정되어 있는지 확인합니다. 그런 다음 입력이 0 인 경우 (입력이 원래 숫자가 아닌 경우) 인쇄되지 않습니다.

그러나, 경우에 입력 된 값은 나는 다음에 코드를 변경 제안, 실제로 0이었다

사람이, 내가 배운이 무슨 짓을했는지 합성 결국 궁금해 경우
a=(raw_input("Amount:")) 

try: 
    int(a) 
except ValueError: 
    try: 
     float(a) 
    except ValueError: 
     print "This is not a number" 
     a=None 

if a is not None: 
    print a 
+0

이것은 정말로 도움이되었습니다 ... 감사합니다! – ebnhawk

0

:

answer = (raw_input("gimme a number: ")) 

def is_numeric(number): 
    try: 
     int(number) 
     return True 
    except ValueError: 
     try: 
      float(number) 
      return True 
     except ValueError: 
      print "that ain't a number" 
      return False 


def reply(number): 
    if is_numeric(number): 
     print "%s is a good number" % number 

reply(answer) 

(현재 실습 중입니다.) 내가 뭘보고 있는지 이해하도록 도와 주셔서 감사합니다!

관련 문제