检测回文数的Python代码输入121时失效,求故障原因
问题原因及修复方案
错误根源
你的代码存在类型不匹配的问题:
var1是通过int()转换后的整数类型,比如输入121时,var1 = 121(整数)num = str(var1)[::-1]是把整数转成字符串后反转,得到的是字符串类型,即"121"(字符串)
Python中整数和字符串属于不同数据类型,哪怕内容完全一致,直接用==比较也会返回False,这就是输入121时输出错误的核心原因。输入123时输出看似正确,只是巧合——整数123和字符串"321"本身就不相等,逻辑本质是错误的。
两种修复方法
方法1:将反转结果转回整数
修改反转代码,把字符串结果转为整数,保证两边类型一致:
var1 = int(input("enter a number:")) num = int(str(var1)[::-1]) # 新增int()转换,统一为整数类型 if var1 == num: print("its a palindrome") else: print("its not a palindrome")
方法2:全程用字符串处理(更简洁)
直接把输入当作字符串处理,避免类型转换的麻烦:
var1 = input("enter a number:") num = var1[::-1] if var1 == num: print("its a palindrome") else: print("its not a palindrome")
内容的提问来源于stack exchange,提问作者Somnath pattnayak
相关产品推荐
相关产品推荐

