2013-05-28 176 views
1

我努力學習Python和可以爲它的生活,想不通,爲什麼這個:的Python爲什麼INT(「0」)返回false

i = raw_input("enter a number") 

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

如果我不會返回true = =「0」

背景: 我想實現聯合查找算法。一切工作正常,但當我嘗試連接兩個點,一個是0它不會讓我通過控制。 (Python 2.7)

+2

閱讀[this](http://docs.python.org/release/2.5.2/lib/truth.html) –

+0

當你「嘗試連接兩個點」時你究竟檢查了什麼? – Elazar

+0

我正在構建聯盟查找算法 –

回答

4

Python類型具有布爾值,定義爲special methods。特別是0,None,False,""(和任何其他空序列)都是錯誤的。

顯然,

>>> int("0") 
0 

更重要的是,中False值爲0,而True值1,在大多數情況(除了其作爲字符串表示,他們type,這是bool) :

>>> 0 == False 
True 
+0

謝謝。雖然duskast有正確的方法來解決手頭的問題,但你回答了這個問題。 –

2

因爲0是falsy,就像None[]{}False(一nd更多的對象)。它不是明確的錯誤,但在用作條件時它的計算結果爲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,那麼我們繼續前進。但是因爲Elazar的回答,我現在知道爲什麼這是錯誤的方法。 –