Sim*_*ity -1 python regex testing
我们如何编写一个测试来检查一个值是否为数字,并在该值不是数字时抛出异常?在这种情况下我们需要正则表达式吗?
谢谢。
您可以使用数字模块。
>>> import numbers
>>> isinstance(1, numbers.Number)
True
>>> isinstance('a', numbers.Number)
False
Run Code Online (Sandbox Code Playgroud)
应该注意的是,复数也被认为是 numbers.Number 的一部分,如果你只想要实数,你可以这样做:
>>> import numbers
>>> isinstance(1, numbers.Real)
True
>>> isinstance(1j, numbers.Real)
False
Run Code Online (Sandbox Code Playgroud)
至于如果值不是数字则抛出异常,我会这样做:
assert isinstance(my_value, numbers.Real)
Run Code Online (Sandbox Code Playgroud)
AssertionError如果my_value不是实数,它将抛出。
Python 3 中有三种不同的数字类型(int、float 和complex)。请注意,boolean 是 int 的子类。
您可以按如下方式检查它们:
def check_numeric(x):
if not isinstance(x, (int, float, complex)):
raise ValueError('{0} is not numeric'.format(x))
Run Code Online (Sandbox Code Playgroud)
如果参数是数字,则该函数不执行任何操作。如果不是,则会抛出 ValueError。
>>> check_numeric(1)
>>> check_numeric(True)
>>> check_numeric(1.5)
>>> check_numeric(10L)
>>> check_numeric(complex(1, 2))
>>> check_numeric('spam')
ValueError: spam is not numeric
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1386 次 |
| 最近记录: |