我努力學習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)
我努力學習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)
Python類型具有布爾值,定義爲special methods。特別是0
,None
,False
,""
(和任何其他空序列)都是錯誤的。
顯然,
>>> int("0")
0
更重要的是,中False
值爲0,而True
值1,在大多數情況(除了其作爲字符串表示,他們type
,這是bool
) :
>>> 0 == False
True
謝謝。雖然duskast有正確的方法來解決手頭的問題,但你回答了這個問題。 –
因爲0
是falsy,就像None
,[]
,{}
和False
(一nd更多的對象)。它不是明確的錯誤,但在用作條件時它的計算結果爲False
。
如果你想檢查i
是一個數字,認爲它是一個數字:
try:
n = int(i)
print "That's a number"
except ValueError:
print "That's not a number"
我認爲你的意思i.isdigit()
,而不是int(i)
。
是的,我的思考過程是:如果可以將您轉換爲int,那麼我們繼續前進。但是因爲Elazar的回答,我現在知道爲什麼這是錯誤的方法。 –
閱讀[this](http://docs.python.org/release/2.5.2/lib/truth.html) –
當你「嘗試連接兩個點」時你究竟檢查了什麼? – Elazar
我正在構建聯盟查找算法 –