我正在用 Python 编写一些测试,对于其中一个测试,我需要验证一个值是 int 还是可以完全转换为 int。
应该通过:
0
1
"0"
"123456"
应该失败:
""
"x"
"1.23"
3.14
我怎样才能最好地编写这个断言?
最佳答案
所以,为了 100% 确定,它必须是这样的:
def is_integery(val):
if isinstance(val, (int, long)): # actually integer values
return True
elif isinstance(val, float): # some floats can be converted without loss
return int(val) == float(val)
elif not isinstance(val, basestring): # we can't convert non-string
return False
else:
try: # try/except is better then isdigit, because "-1".isdigit() - False
int(val)
except ValueError:
return False # someting non-convertible
return True
在下面的答案中有一个检查,使用类型转换和相等性检查,但我认为它不能正确处理大整数。
也许有更短的路
关于python - 我怎样才能最好地断言一个值可以在 Python 中转换为 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16464279/