Python判断输入是否为数字的三种方法:isdigit、异常处理与正则表达式

Hazel
Hazel
发布时间:2026-10-13 | 5人浏览过
原创

本文介绍Python中判断用户输入是否为数字的三种常用方法。首先讲解整型判断使用的isdigit()方法及其局限性;其次通过try-except异常处理机制实现浮点数验证;最后利用正则表达式精确匹配浮点数格式。文章提供完整代码示例,帮助开发者根据需求选择合适方案。

在接收用户通过raw_input方法输入的字符串后,需要判断该字符串是否代表一个数字。

具体示例如下:

str = raw_input("please input the number:")
if str.isdigit():

若返回True,表示输入的字符串全部由数字字符组成;否则,说明并非所有字符都是数字。

对于字符串str,可以使用isalnum()判断是否全为数字或字母,isalpha()判断是否全为字母,isdigit()判断是否全为数字,islower()判断是否全为小写,isupper()判断是否全为大写,istitle()判断是否所有单词首字母大写(类似标题格式),以及isspace()判断是否全为空白字符(包括\t、\n、\r)。上述方法主要针对整型数字,对浮点数并不适用。关于为何要区分整型和浮点数,既然两者都参与运算,直接统一转为浮点数或结果后转为int型似乎更简便,无需在前期严格区分。基于这种思路,以下是具体的处理方案:

我们可以利用异常机制来进行判断,异常处理的基本语法结构如下:

try: {执行语句} except: {异常对象} {处理语句}

代码示例如下: str = raw_input("please input the number:") try: f = float(str) except ValueError: print("输入的不是数字!")

此外,还有一种专门用于判断浮点数的方法,即使用正则表达式:

1. 首先引用re正则模块。

import re
float_number = str(input("Please input the number:"))
#调用正则
value = re.compile(r'^[-+]?[0-9]+\.[0-9]+$')
result = value.match(float_number)
if result:
  print "Number is a float."
else:
  print "Number is not a float." 

2. 对该正则表达式的解释如下:

^[-+]?[0-9]+\.[0-9]+$

^表示字符串以该字符开头,即以[-+]开头,其中[-+]代表字符-或+之一。?表示0个或1个,意味着符号是可选的。同理,[0-9]表示0到9之间的一个数字,+表示1个或多个,代表整数部分。\.表示小数点,由于.是特殊符号(匹配任意单个除\r\n之外的字符),因此需要使用\进行转义。小数部分的逻辑同理,$表示字符串以该模式结尾。

以下是判断输入是否全为数字、字符等的其他方法总结。

假设s为字符串变量。

s.isalnum()判断所有字符是否都是数字或字母,若为真返回True,否则返回False。 s.isalpha()判断所有字符是否都是字母,若为真返回True,否则返回False。 s.isdigit()判断所有字符是否都是数字,若为真返回True,否则返回False。 s.islower()判断所有字符是否都是小写,若为真返回True,否则返回False。 s.isupper()判断所有字符是否都是大写,若为真返回True,否则返回False。 s.istitle()判断所有单词是否都是首字母大写,若为真返回True,否则返回False。 s.isspace()判断所有字符是否都是空白字符,若为真返回True,否则返回False。 具体示例如下:

s = 'I LOVE YOU' 
s.isupper() 
True

本文介绍到此结束,希望读者多多支持本站。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表