2014-02-19 3 views
0

Я прошу прощения, если это оказывается дубликат, но я не мог найти что-нибудь по этому поводу ...Оценивает истинное вне выражения, но ложь внутри

(Python 2.7.6)

В Ессенции, Я использую варианты кода ниже:

def isnum(a): 
    try: 
     float(a) 
     return True 
    except ValueError: 
     return False 

, который определяет, действительно ли введен пользователем номер или нет.

isnum(3) 
True 

isnum("3") 
True 

Если я использую следующий код:

def input(): 
    while True: 
     a = raw_input("Please enter a number:") 
     if isnum(a): 
      print float(a) 
      break 
     else: 
      print "Please enter only numbers!",a,'is invalid' 

input() 

Я хотел бы также отметить, что я пытался isnum(a) == True, а также ...

я получаю «ввода только цифры» ошибка при вводе «3» при появлении запроса !.

Please enter a number:"3" 
Please enter only numbers! "3" is invalid 

Заранее спасибо.

+1

Вы не должны вводить '' 3 "', просто '3'. – thefourtheye

+0

'float ('" 3 "')' отличается от 'float (" 3 ")'. –

+0

Кроме того, 'str.isdigit()' является встроенным, который делает то, что делает ваш 'isnum()'. – msvalkon

ответ

2

"3" - это строка, содержащая 3. Но когда вы отправляете ее в raw_input, она становится '"3"' которая 3 окружена кавычками, которая не является числом.

+0

Просто осознал это сам. Спасибо, в любом случае! – Arashi

0

Вы даете "3" в качестве входных данных, а не 3.

Смежные вопросы