2

私はPythonを学ぼうとしていますが、その生涯にわたって、これがなぜなのかわかりません:

i = raw_input("enter a number")

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

i == "0" の場合は true を返しません

背景: Union-Find Algorithm を実装しようとしています。すべて正常に動作しますが、2 つのポイントを接続しようとして、1 つが 0 の場合、コントロールを通過できません。(パイソン2.7)

4

3 に答える 3

5

Python の型にはブール値があり、特別なメソッドで定義されています。特に , , , 0(Noneおよびその他の空のシーケンス) は false です。False""

明らかに、

>>> int("0")
0

さらに、ほとんどの目的で、Falseの値は 0 であり、 の値は 1 です (文字列としての表現と、であるを除く)。Truetypebool

>>> 0 == False
True
于 2013-05-28T01:42:57.290 に答える
4

i.isdigit()の代わりに意味したと思いますint(i)

于 2013-05-28T01:44:00.980 に答える
2

、、および(およびその他のいくつかのオブジェクト) と0同様に、 は偽物であるためです。明示的に false ではありませんが、条件として使用すると評価されます。None[]{}FalseFalse

それが数値であることを確認したい場合iは、それが数値であると仮定します。

try:
    n = int(i)
    print "That's a number"
except ValueError:
    print "That's not a number"
于 2013-05-28T01:43:32.080 に答える