You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python回文检测脚本问题求助:两种实现方案均失效

回文检测脚本的问题分析与修复

第一种方案的问题与修复

问题:reversed(phrase)返回的是列表反转迭代器,并非列表对象,直接和列表phrase做相等判断永远不会成立。

修复方式:将迭代器转换为列表,使用list(reversed(phrase))即可完成类型统一。

修正后的代码:

original_phrase = input()
phrase = list(original_phrase)
reversed_phrase = list(reversed(phrase))  # 把迭代器转为列表

if phrase == reversed_phrase:
    print(original_phrase, '是回文')
else:
    print(original_phrase, '不是回文')

第二种方案的问题与修复

问题:reversed_phrase = phrase是引用赋值,两个变量指向同一个列表对象。调用reversed_phrase.reverse()会直接修改原列表phrase,导致循环对比时两个列表完全一致,判断逻辑失效。

修复方式:创建原列表的独立副本,比如用phrase.copy()或phrase[:],再对副本执行反转操作。

修正后的代码:

original_input= input()
phrase = list(original_input)

reversed_phrase = phrase.copy()  # 创建原列表的副本
reversed_phrase.reverse()

is_palindrome = False
for i in range(len(phrase)):
    print(phrase[i], reversed_phrase[i])
    if phrase[i] != reversed_phrase[i]:
        break
    elif i == len(phrase) - 1:
        is_palindrome = True

if is_palindrome:
    print(original_input, '是回文')
else:
    print(original_input, '不是回文')

额外简化方案

其实无需转列表,直接利用字符串切片反转即可实现更简洁的回文判断:

original = input()
if original == original[::-1]:
    print(original, '是回文')
else:
    print(original, '不是回文')

内容的提问来源于stack exchange,提问作者toxurn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 03:50:24