我是python的新手,我不确定if
条件的规则:
条件1:
if 0:
Print "true"
output:
条件2:
if -1:
Print "true"
output: true
条件3:
if 1:
Print "true"
output: true
我将解释我的代码,
条件1:它没有打印语句,因为它被视为false(布尔值)
条件2:它打印语句,因为它被视为true(布尔值)
为什么它是真的,它是负值(我的假设它只需要假)?
条件3:它打印语句,因为它被视为true(布尔值)。
答案 0 :(得分:5)
它简单如下:
Python if
语句(以及许多其他语言)中的条件转换为布尔值,无论它通常是什么类型。这是使用定义的机制完成的,该机制指定参数是True
还是False
给出不同的值。
在Python中,参数转换为布尔值,如下所示(稍微解释):
4.1 Truth Value Testing
可以测试任何对象的真值,用于if或while条件或下面布尔运算的操作数。如果参数是以下之一:
None
False
- 数字0表示为任何数字类型(整数,浮点数,长整数)
- 任何空序列(
''
,()
,[]
)- 任何空地图(
{}
)- 用户定义的类的实例,如果该类定义
__bool__()
或__len__()
方法,则该方法返回整数零或bool值False
。然后是
False
。否则,它是True
。
由于-1
不是假的,因此它是真实的,因此运行if语句,即使它是否定的。
答案 1 :(得分:2)
你可能在寻找什么:
Python中的真值: http://docs.python.org/2.4/lib/truth.html
可以测试任何对象的真值,以便在if或while中使用 条件或下面的布尔运算的操作数。下列 值被视为错误:
无
假
任何数字类型的零,例如,0,0L,0.0,0j。
任何空序列,例如'',(),[]。
任何空映射,例如{}。
用户定义类的实例,如果类定义了 非零()或 len ()方法,当该方法返回整数零或bool值False.2.5
所有其他值都被认为是真的 - 所以很多类型的对象都是 总是如此。
答案 2 :(得分:1)
仅仅因为数字为负数并不意味着它是False
:
>>> bool(-1)
True
执行if <something>:
时,请将其视为执行if bool(<something>)
的python。
如果 bool(<something>)
为True,则if语句将运行。否则,它不会。
答案 3 :(得分:1)
只有0被视为False。负数并不意味着它是假的。尝试任何负数结果都是真的。
答案 4 :(得分:1)
The documentation确切地告诉您哪些值被视为false:
None
False
0
,0L
,0.0
,0j
。''
,()
,[]
。{}
。__nonzero__()
或__len__()
方法,则该方法返回整数零或bool
值False
。有关这些特殊方法的更多信息,请参阅Python参考手册(Basic customization)。