Python中判断输入字符串是否为数字的方法

在写物理实验图像处理的脚本时,遇到了一个判断输入的字符串是否为数字的方法

最开始我的思路是这个

test = input()
while test.isdigit():
    # do something

用的是系统自带的String.isdigit()的方法,该方法用于判定输入的字符串是否为纯数。如果是纯数,则返回True,否则返回False。

但是这样有一个问题,浮点数中有dot这个符号,所以一旦用户输入浮点数,返回值就是False,达不到我要的目标。后来想用最原始的C++中判定ASCII码的方法解决该问题,觉得过于复杂。于是有了下面这个思路,用异常来捕捉。

def isscalar(str):
    try:
        float(str)
    except ValueError:
    	return False
    else:
        return True

由于在使用float()(也包括其他数型的转换int、long)转换时,若转换对象不是数字,系统会自动报错

ValueError: could not convert string to float: 'string'

于是利用这一点来实现判定用户输入是否是数字,也算是对异常捕捉的一次学习了。

posted @ 2019-09-18 22:10  scyq  阅读(24012)  评论(0编辑  收藏  举报