【发布时间】:2015-12-01 20:32:22
【问题描述】:
我不确定是否使用 try/except 或 if 条件来检测数字是 int 还是 float。我知道我的输入是浮点数或整数,并且我想为所有浮点数引发值错误,如果数字是整数,则执行某些操作。可能会看到此类行为的一个示例是阶乘……但是,我不希望将 5.0 转换为 5。最好的方法是什么?
factorial(5)
> 120
factorial(asdf)
> ValueError
factorial(5.0)
> ValueError
我读了这个问题Parse String to Float or Int,但我还是很困惑
【问题讨论】:
-
我建议您根本不要检测输入类型。如果您只是实现
factorial而不关心输入类型,它可能 (a) 适用于有意义的类型,并且 (b) 无论如何都会引发其他类型的执行。 -
你在说什么
factorial函数?是你写的吗? -
@tdelaney 我很确定它只是
math.factorial,但仍然是一个好问题 -
我认为这并不重要。我只是以阶乘为例,我想在其中区分浮点数和整数。实际用途是分析我在没有 API 的情况下抓取的 English Soccer 数据,因此有点混乱。我可以用另一种方式来做,但是因为我有想法并且不知道解决方案,所以我想我会问。这个问题更具理论性......
-
@JoranBeasley
math.factorial不会使用5.0引发 ValueError。我希望将 OP 引入一个与他的问题有关的示例。
标签: python int type-conversion