2013-05-28 5 views
1

Я пытаюсь узнать Python и может, в жизни этого не понять, почему это:Python почему INT («0») возвращают ложные

i = raw_input("enter a number") 

if int(i): 
    print "yes" 
else: 
    print "false" 

не возвращает истину, если я = = "0"

Фон: Я пытаюсь реализовать Алгоритм поиска союзников. Все работает нормально, но когда я пытаюсь подключить две точки, а один - 0, это не позволит мне контролировать. (Python 2.7)

+2

Прочтите [это] (http://docs.python.org/release/2.5.2/lib/truth.html) –

+0

Что именно вы проверяете, когда пытаетесь подключить две точки? – Elazar

+0

Я строил Алгоритм поиска союза –

ответ

4

Типы питона имеют логическое значение, определенное special methods. в частности, 0, None, False, "" (и любая другая пустая последовательность) являются ложными.

Очевидно,

>>> int("0") 
0 

Более того, значение False равно 0, а значение True является 1, для большинства целей (для их представления в виде строк, за исключением, и их type, что bool) :

>>> 0 == False 
True 
+0

Спасибо. Хотя у duskast был правильный способ решить проблему, вы ответили на вопрос. –

2

Поскольку 0 является falsy, так же, как None, [], {} и False (а и еще несколько объектов). Он явно не является ложным, но при использовании в качестве условия он оценивает значение False.

Если вы хотите проверить, что i это число, предположим, что это число:

try: 
    n = int(i) 
    print "That's a number" 
except ValueError: 
    print "That's not a number" 
3

Я думаю, что вы имели в виду i.isdigit() вместо int(i).

+0

Да, мой мыслительный процесс был: если можно преобразовать вас в int, тогда давайте двигаться дальше. Но из-за ответа Элазара я теперь знаю, почему это был неправильный подход. –