gpt4 book ai didi

python - 检查 python 对象是否可以解释为实数 [python]

转载 作者:太空宇宙 更新时间:2023-11-03 14:04:34 25 4
gpt4 key购买 nike

我用python写了这个函数:

def is_number_like(x):
try:
int(x) + 1
except:
return False
return True

如果我写float(x)int(x) 有什么区别吗?或者 + 1 部分在某些情况下有用吗?

编辑:is_number_like 将在传递字符串时返回 True - 这是我不想成为的。我想要一个函数,它会在任何时候将类似文本的值作为参数传递时返回 False。有什么方法吗?

也许:

def is_number_like(x):
try:
x + 1
except:
return False
return True

会更好吗?

或者也许:

def is_number_like(x):
try:
float(x + 1) == float(x) + 1
except:
return False
return True

我想编写一个模块,它可以接受任何代表一维实数的行为良好的数字类型(例如 SimpleITK.sitkUInt8 数字类型或 numpy.int32等等……)。

恐怕会有一些库在转换为 int 或 float 时不会抛出错误。例如我可以想象这样的情况:

>>> z = SomeComplexType(1. + 2.j)
>>> z
(1+2j)
>>> z -= 2.j
>>> z
(1+0j)
>>> float(z) # does not raise an error
1.

这可能吗,我应该担心这种情况吗?

是否所有设计良好的实数类型都可以毫无错误地转换为float

附言。我已经读过这个: How do I check if a string is a number (float)?

最佳答案

如果我没理解错的话,你实际上想做的是找出一个对象是否以类似“数字”的方式表现(例如,你可以向它附加 +1 )。如果是这样,还有更简单的方法:

>>> from numbers import Number
>>>
>>> my_complex_number = 3-2j
>>> my_stringy_number = "3.14"
>>>
>>> isinstance(my_complex_number, Number)
True
>>> isinstance(my_stringy_number, Number)
False

关于python - 检查 python 对象是否可以解释为实数 [python],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45062646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com