如何用Python正则表达式判断输入是否含整数并输出指定结果
问题分析与修复方案
先说说你这段代码里的几个核心问题:
- 如果输入字符串里没有整数,
re.search(r'\d+', yourString)会返回None,这时候调用.group()会直接抛出AttributeError,程序直接崩溃,根本走不到后续的判断逻辑 - 就算成功匹配到数字,
number是一个字符串(比如"123"),你拿它和布尔值True比较,结果永远是False,完全不符合你的判断需求
下面是两种修复后的实现方案,你可以根据需求选择:
方案一:用正则表达式正确判断
import re your_string = input() # 先捕获匹配结果,再判断是否存在 match_result = re.search(r'\d+', your_string) if match_result: print("Correct") else: print("Incorrect")
解释:
re.search()找到匹配时会返回一个匹配对象,找不到则返回None;在Python里None属于假值,非空的匹配对象属于真值,直接用if match_result:就能判断是否存在整数- 不需要调用
.group(),因为我们只需要确认「是否存在」,不需要提取具体的数字内容
方案二:不用正则,遍历字符判断
如果不想依赖正则表达式,也可以直接遍历字符串的每个字符来检查:
your_string = input() # 检查是否有任意一个字符是数字 has_integer = any(char.isdigit() for char in your_string) print("Correct" if has_integer else "Incorrect")
解释:
char.isdigit()会判断单个字符是否为数字字符any()函数会遍历传入的迭代器,只要其中有一个元素为真就返回True,刚好满足我们「只要包含整数就判定正确」的需求
内容的提问来源于stack exchange,提问作者user9754923
相关产品推荐
相关产品推荐

