0 and False

0 and False



[Copy to clipboard] [ - ]
CODE:
>>> while False:
...  print 'while'
... else:
...  print 'else'
...
else
>>> while 0:
...  print 'while'
... else:
...  print 'else'
...
>>>

这里0和Fasle不相同吗?
忘了写这个了

[Copy to clipboard] [ - ]
CODE:
>>> a=0
>>> while a:
...  print 'while'
... else:
...  print 'else'
...
else
>>>

条件判断:0和False不是相同的吗?
我想问题是这些怎么不同?

while语句里面有else分支么,应该是if,else吧,语法有问题
0,False以及空的list,tuple,''(空的字符串)这些都被认为是假的条件

回楼上,while有else这样的语法。


QUOTE:
原帖由 xiaoyu9805119 于 2008-9-22 09:04 发表
0,False以及空的list,tuple,''(空的字符串)这些都被认为是假的条件

既然如此,这里0和False为何表现不同呢?


QUOTE:
原帖由 shuiguomayi 于 2008-9-21 23:21 发表
while语句里面有else分支么,应该是if,else吧,语法有问题

while ...:
  ...
else:
  ...

for ....:
  ...
else:
  ...

以上句型都有
我的疑惑是只有break语句才能跳过else语句,但为何0也可
无此问题。

>>> while 0:
...     print 'aaa'
... else:
...     print 'bbb'
...
bbb
你的版本是?
我的是

[Copy to clipboard] [ - ]
CODE:
$python
Python 2.5.1 (r251:54863, Apr  8 2008, 01:20:16)
[GCC 4.3.0 20080404 (Red Hat 4.3.0-6)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> while 0:
...     print 'aaa'
... else:
...     print 'bbb'
...
>>>



QUOTE:
原帖由 izhier 于 2008-9-22 15:11 发表
你的版本是?
我的是

$python
Python 2.5.1 (r251:54863, Apr  8 2008, 01:20:16)
[GCC 4.3.0 20080404 (Red Hat 4.3.0-6)] on linux2
Type "help", "copyright", "credits" or "license" for more info ...

Python 2.5.2 (r252:60911, Sep 14 2008, 10:31:34)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> while 0:
...     print 'aaa'
... else:
...     print 'bbb'
...
bbb
>>>
原来是版本的问题