[英]If-statement in Python
我对 python 有点怀疑。
x = ''
if x:
print 'y'
所以,它永远不会打印为“y”
如果我做:
x = 0
if x:
print 'y'
然后它也会做同样的事情。
那么如果我有 '' 值和 0 值,如果我必须只考虑 0 值,如何区分?
这是因为 object 函数__nonzero__()
和__len__()
将用于评估条件。 从文档:
object.__nonzero__(self)
调用实现真值检验和内置操作
bool()
; 应返回False
或True
,或它们的 integer 等价物 0 或 1。当此方法未定义时,__len__()
(如果已定义),如果其结果为非零,则 object 被视为 true。 如果 class 既没有定义__len__()
也没有定义__nonzero__()
,它的所有实例都被认为是真的。
通过重载这些,您也可以用于为自定义类指定此类行为。
至于 if 条件,您可以准确指定要检查的内容:
if x: # evaluate boolean value implicitly
pass
if x is 0: # compare object identity, see also id() function
pass
if x == 0: # compare the object value
pass
至于隐式 boolean 评估的特殊情况:如果int
对象非零,则认为它们是True
; 如果str
对象的长度不为零,则认为它们为True
。
在 python 中,一个空的可迭代对象(此处为字符串)的条件为 false。
如果您需要明确检查一个值是否为0
,则必须说x==0
if x != '':
print 'y'
仅在 x 不是''
时有效
我不清楚你真正想要什么 - 你问题的措辞有点混乱 - 但这可能很有启发性:
>>> test_values = [0,0.00,False,'',None, 1, 1.00, True, 'Foo']
>>> for v in test_values:
if (not v) and (v != ''):
print "Got a logically false value, %s, which was not the empty string ''" % v.__repr__()
Got a logically false value, 0, which was not the empty string ''
Got a logically false value, 0.0, which was not the empty string ''
Got a logically false value, False, which was not the empty string ''
Got a logically false value, None, which was not the empty string ''
这对你不起作用,因为你没有在你的程序中添加输入数字 0 的位置这个程序的正确代码是:
x = int(input("enter the value of x : "))
if x==0:
print("Y")
OUTPUT:输入x的值:0 Y
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.