【问题标题】:python why if zero, print ('True ') when zero = 0, it prints nothing? [duplicate]python为什么如果为零,当零= 0时打印('True'),它什么也不打印? [复制]
【发布时间】:2020-05-16 06:39:32
【问题描述】:

在python中为什么

zero = 0
one = 1
if zero:
  print('True') # this print nothing
if one:
  print('True') # this print True

我想当zero = 0时,这应该是正确的。应该给我True,但为什么什么都没有?如果这是对的,为什么当 if one 时,它给了我 True

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    因为bool(0) == Falsebool(1) == True

    【讨论】:

      【解决方案2】:

      参考这篇文章:Truth Value Testing

      可以测试任何对象的真值,用于 if 或 while 条件或作为以下布尔运算的操作数。以下值被认为是错误的:

      • 错误
      • 任何数字类型的零,例如,0、0L、0.0、0j。
      • 任何空序列,例如,''、()、[]。
      • 任何空映射,例如 {}。
      • 用户定义类的实例,如果该类定义了 nonzero() 或 len() 方法,则该方法返回整数零或布尔值 False。 2.5

      所有其他值都被认为是真——因此许多类型的对象总是真。

      除非另有说明,否则具有布尔结果的操作和内置函数始终返回 0 或 False 表示假,1 或 True 表示真。 (重要的例外:布尔运算“或”和“与”总是返回它们的操作数之一。)

      【讨论】:

        【解决方案3】:

        boolint 的子类型。

        bool 有两个值,TrueFalse,您可以将它们视为整数 1 和 0 的“定制”版本,它们只会以不同的方式打印自己。

        >>> type(True)
        <class 'bool'>
        >>> isinstance(True, int)
        True
        
        >>> True == 1
        True
        

        【讨论】:

        • 0 == False1 == True 实际上并不完全相关,而是所有对象都是真假
        • @juanpa.arrivillaga 我试图完成其他答案。这是一个good post 以供参考。
        • 不确定您所说的“子类型”是什么意思,但 TrueFalsestandalone 对象。
        猜你喜欢
        • 2020-08-10
        • 1970-01-01
        • 2017-05-08
        • 2020-09-27
        • 1970-01-01
        • 2018-01-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多