如何修复Python中用反向range实现回文数判断的代码错误?
你的代码存在两处逻辑错误:
错误1:回文数判断函数逻辑错误
isPalindrome函数中,结果判断和return语句缩进错误,被放在了for循环内部:
- 循环只会执行1次就直接返回结果,没有完成完整的字符串反转拼接。例如判断数字121时,第一次循环只拿到最后一位字符
'1',就会直接判断'121' == '1'返回False,完全不符合回文数判断逻辑。
修正后的函数代码:
def isPalindrome(n): str_n = str(n) reverse = "" for i in range(len(str_n)-1, -1, -1): reverse = reverse + str_n[i] # 待字符串完全反转后再做判断返回 result = str_n == reverse return result
错误2:菜单分支遍历逻辑错误
选项3的代码中break语句缩进错误,被放在了遍历0-999的for循环内部:
- 无论当前遍历的数字是不是回文数,第一次循环结束后都会直接跳出遍历循环,最终只会输出数字0就停止运行,不会遍历所有1000以内的数字。
修正后的分支代码:
elif option == 3: print("PALINDROMES") for i in range(0, 1000): if isPalindrome(i): print(i) # 此处不需要break,直接删除即可,若保留需要移出for循环外
内容的提问来源于stack exchange,提问作者SingerNZ
相关产品推荐
相关产品推荐

