当前位置:  开发笔记 > 编程语言 > 正文

什么是测试输入是格式良好的数字的最pythonic方式

如何解决《什么是测试输入是格式良好的数字的最pythonic方式》经验,为你挑选了2个好方法。

我有一个函数,它期望实数(整数或浮点数)作为它的输入,我试图在对它进行数学运算之前验证这个输入.

我的第一直觉是将输入作为浮点数从try-except块中转换出来.

try:
   myinput = float(input)
except:
   raise ValueError("input is not a well-formed number")

我也可以打电话,isinstance(mydata, (float, int, long) )但"所有这些可能是数字"的清单对我来说似乎有点不合适.

最狡猾的方式是什么?我忽略了另一种选择吗?



1> Egil..:

引用自己我应该对我的python函数/方法进行多少输入验证?:

对于sum,factorial等计算,pythons内置类型检查会很好.计算将结束upp为类型调用add,mul等,如果它们中断,它们将抛出正确的异常.通过强制执行您自己的检查,您可能会使其他工作输入无效.

因此,最好的选择是将类型检查留给Python.如果计算失败,Python的类型检查将给出异常,因此如果您自己执行此操作,则只需复制代码即可代表您完成更多工作.



2> Brian..:

在Python 2.6和3.0,数字抽象数据类型的类型层次结构已被添加,所以你可以执行你的支票:

>>> import numbers
>>> isValid = isinstance(myinput , numbers.Real)

numbers.Real将匹配integer或float类型,但不是非数字类型或复数(使用numbers.Complex).它也会匹配有理数,但可能你也希望包含这些数字.即:

>>> [isinstance(x, numbers.Real) for x in [4, 4.5, "some string", 3+2j]]
[True, True, False, False]

不幸的是,这一切都在Python> = 2.6中,因此如果您正在开发2.5或更早版本,则无用.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有