Python实现输入exit退循环、对称输入打印goodbye的代码问题咨询
Python回文判断循环代码问题排查及修复方案
代码无法正常运行的核心原因
原代码的问题完全出在执行顺序设计错误:
- 逆序计算和输入读取的顺序颠倒:代码先计算上一轮循环存储的旧字符串的逆序,再读取用户新输入的内容赋值给
string,后续判断逻辑是拿「上一轮输入的逆序」和「当前新输入的字符串」做对比,根本没有校验当前输入是否为对称字符串。
举个实际执行示例:用户首次输入对称字符串aaa,此时txt是初始空字符串的逆序(值为空),比对空 == 'aaa'不成立,不会打印goodbye;当用户第二次再输入aaa时,txt是上一轮输入aaa的逆序aaa,此时比对成立才会触发打印,完全不符合预期逻辑。 exit退出逻辑不满足要求:exit的判断仅在循环开头执行,用户输入exit后不会立刻退出,还会先执行一次回文判断逻辑,不符合「输入exit时直接退出」的需求。
符合需求的优化实现方案
调整逻辑顺序,优先读取输入、第一时间判断exit,再校验当前输入是否为回文即可:
while True: string = input('enter:') # 输入exit直接退出 if string == 'exit': break # 判断当前输入是否为对称字符串 if string == string[::-1]: print('goodbye') break
该实现的逻辑完全贴合需求:输入exit会第一时间触发break退出循环;输入其他内容时直接校验自身是否为对称字符串,匹配则打印goodbye后退出,否则循环等待下一次输入。
内容的提问来源于stack exchange,提问作者Davey Jones
相关产品推荐
相关产品推荐

