【问题标题】:How can I check that a variable is 0.0 and not False?如何检查变量是否为 0.0 而不是 False?
【发布时间】:2020-07-29 23:23:55
【问题描述】:

我需要特别区分变量何时为0.0,因此a == 0 将不起作用,因为当a 等于False 时它将失败。完成此任务的最佳方法是什么?

【问题讨论】:

  • 相关:stackoverflow.com/questions/27431249/python-false-vs-0 不是重复的,但由于浮动问题
  • 我对您为什么需要做出区分很感兴趣。这表明设计可以改进。
  • 这实际上只是一个编程挑战,在包含 0、0.0、False、“0”等项的数组中识别 0。

标签: python


【解决方案1】:

试试这个:

a = 0.0
if a == 0.0 and isinstance(a, float):
    print('a is 0.0')

或者不那么严格(不管a 是否不是一个浮点值):

a = 0
if a == 0 and a is not False:
    print('a is zero')

【讨论】:

  • 请注意a == 0 and a is not False 可以与0 == a is not False 链接。
  • @blhsing TBH 这看起来不像是一种改进,我仍在尝试在脑海中解析为什么这会起作用,你需要记住运算符优先级规则。我们不要因为输入更少的代码而牺牲可读性。
【解决方案2】:

您可以检查变量类型,以指定所需的正确数据类型。 type(a) 函数会返回一个类,然后type(a).__name__ 会给你字符串形式。

【讨论】:

    【解决方案3】:

    您可以同时检查type 和该变量的值。例如,如果您想检查 a == 0.0 是否特别可以使用:

    if type(a) != bool and a == 0
    

    【讨论】:

      【解决方案4】:

      您可以对is 使用短路技巧:

      if (a and False) is not False:
         # ...
      

      if not(a or a is False):
         # ...
      

      【讨论】:

        猜你喜欢
        • 2011-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-28
        • 2015-02-25
        • 1970-01-01
        • 2012-02-05
        相关资源
        最近更新 更多