繁体   English   中英

Python 中的 if 语句

[英]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() 应返回FalseTrue ,或它们的 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM