测试值是否为数字

时间:2015-07-25 14:10:52

标签: python regex testing

我们如何编写一个检查值是否为数字的测试,抛出异常的值是否为数值?在这种情况下我们需要正则表达式吗?

感谢。

3 个答案:

答案 0 :(得分:2)

您可以使用数字模块。

>>> import numbers
>>> isinstance(1, numbers.Number)
True
>>> isinstance('a', numbers.Number)
False

应该注意的是,复数被认为是数字的一部分。数量也是如此,如果你只想要实数,你可以这样做:

>>> import numbers
>>> isinstance(1, numbers.Real)
True
>>> isinstance(1j, numbers.Real)
False

如果值不是数字,则抛出异常我会这样做:

assert isinstance(my_value, numbers.Real)

如果AssertionError不是真实数字,那么会抛出my_value

答案 1 :(得分:0)

如果您的"数值"实际上是字符串,那么最简单的方法就是运行测试转换。

e.g。如果您期望浮点值,请转换为float

  def is_float(v):
      f=float(v)
      return True

  >>> is_float(2.2)
  True
  >>> is_float("3.14")
  True
  >>> is_float("ouch")
  ValueError: could not convert string to float: ouch

注意:如果您只想提出异常,那么您可能不需要包装函数is_float()。直接做任务......

如果您不想提出异常,只是测试数值,is_float()的更一致的实现会捕获错误并返回False

  def is_float(v):
      try:
        f=float(v)
      catch ValueError:
        return False
      return True

答案 2 :(得分:0)

Python中有四种数字类型(int,float,long和complex)。您可以按如下方式检查它们:

ajax

如果参数是数字,则该函数不执行任何操作。如果不是,则抛出ValueError。

def check_numeric(x):
    if not any([isinstance(x, int),
                isinstance(x, float), 
                isinstance(x, long), 
                isinstance(x, complex)]):
        raise ValueError('{0} is not numeric'.format(x))