if条件的规则是什么?

时间:2013-10-28 11:09:25

标签: python

我是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(布尔值)。

5 个答案:

答案 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
  • 任何数字类型的零,例如00L0.00j
  • 任何空序列,例如''()[]
  • 任何空映射,例如{}
  • 用户定义类的实例,如果类定义了__nonzero__()__len__()方法,则该方法返回整数零或boolFalse。有关这些特殊方法的更多信息,请参阅Python参考手册(Basic customization)。