整数回文检测程序无法识别非整数输入的解决方法求助
解决方案
核心逻辑说明
- 首先
input()函数的返回值默认都是字符串类型,无法直接通过类型判断筛选整数,需要用异常捕获的方式尝试将输入内容转为整数:转换成功就是合法整数,转换失败就触发非整数的提示并终止程序。 - 只要
int()转换抛出ValueError,就说明输入内容无法被识别为整数,包含float格式、布尔值、普通字符串的输入都会触发这个错误。 - 校验通过后再用原输入字符串做回文判断,逻辑和你原有写法的判断规则保持一致。
修改后完整代码
def Palindrome(n): return n == n[::-1] n = input("Please enter an integer: ") # 新增输入校验逻辑 try: # 尝试将输入转为整数,失败就会触发ValueError int(n) except ValueError: print("The input is not an integer") # 终止程序运行 exit() ans = Palindrome(n) if ans: print("The number " + n + " is a palindrome") else: print("The number " + n + " is NOT a palindrome")
可选优化
如果需要过滤带前导零的非标准整数输入(比如输入0121,实际对应整数是121,但字符串判断会认为不是回文),可以在校验阶段补充判断:将输入转整数后再转回字符串,和原输入对比,如果不一致也判定为非法输入即可。
内容的提问来源于stack exchange,提问作者user17196990
相关产品推荐
相关产品推荐

