【问题标题】:Check if value is zero or not null in python检查python中的值是否为零或不为空
【发布时间】:2015-01-29 08:28:11
【问题描述】:

我经常检查数字变量number 是否具有if number 的值,但有时数字可能为零。所以我通过if number or number == 0解决了这个问题。

我能以更聪明的方式做到这一点吗?我觉得单独检查 value 是否为零有点难看。

编辑

我想我可以检查该值是否是一个数字

def is_number(s):
    try:
        int(s)
        return True
    except ValueError:
        return False

但是我仍然需要与if number and is_number(number)联系。

【问题讨论】:

标签: python python-3.x


【解决方案1】:

如果number 可以是None 一个数字,并且您想包含0,请改为过滤None

if number is not None:

如果number 可以是任意数量的类型,请测试类型;您可以只测试int 或带有元组的类型组合:

if isinstance(number, int):  # it is an integer
if isinstance(number, (int, float)):  # it is an integer or a float

或许:

from numbers import Number

if isinstance(number, Number):

允许整数、浮点数、复数、DecimalFraction 对象。

【讨论】:

  • 但如果值不为空或值为零,我确实希望我的语句评估为真。
  • 当然。谢谢.. 如果我只想知道它是否是一个数字怎么办?我已经编辑了我的问题
  • @Jamgreen:然后使用isinstance() 测试类型
  • @MartijnPieters 如何获得 isinstance 方法?
  • @SamKahChiin:这不是一种方法。这是built-in function
【解决方案2】:

对于 if 块,零和无都被视为相同,下面的代码应该可以正常工作。

if number or number==0:
    return True

【讨论】:

    【解决方案3】:

    更简单的方法:

    h = ''
    i = None
    j = 0
    k = 1
    print h or i or j or k
    

    将打印1

    print k or j or i or h
    

    将打印1

    【讨论】:

      【解决方案4】:

      您可以检查它是否可以转换为十进制。如果是,那么它是一个数字

      from decimal import Decimal
      
      def is_number(value):
          try:
              value = Decimal(value)
              return True
          except:
              return False
      
      print is_number(None)   // False
      print is_number(0)      // True
      print is_number(2.3)    // True
      print is_number('2.3')  // True (caveat!)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-30
        • 2022-09-23
        • 2016-03-05
        • 2014-08-05
        • 1970-01-01
        • 2017-11-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多