导入回文函数后判断失效:处理回文检查中的尾随换行符问题
解决导入回文函数后回文判断错误的问题
我一眼就揪出问题所在了!你读取文件行的时候,readline()会把文本末尾的**换行符\n**也一并读进来,转小写后这个隐藏的换行符依然存在。正是这个不起眼的字符,导致处理后的字符串反转后和原串不匹配,才让回文判断结果出错。
具体问题拆解
你读取的行实际内容是:"was it a cat i saw?\n",转小写后还是带着\n。经过palindrome函数清理掉标点空格后,得到的是"wasitacatisaw\n",反转后变成"\nwasitacatisaw",和原串明显不相等,所以才会输出“not palindrome”。
修复方案
只需要在读取行的代码后加上strip()方法(去掉首尾所有空白字符,包括换行符、空格、制表符等),或者用rstrip('\n')精准去掉末尾的换行符即可。另外路径里的反斜杠建议加上r前缀做成原始字符串,避免潜在的转义问题。
修正后的完整调用代码:
from pal_func import palindrome f=open(r"C:\Users\hp\Desktop\test file.txt",'r') c=f.readline().lower().strip() # 新增strip()处理换行符 print(c) palindrome(c)
验证结果
运行修正后的代码,输出就会完全符合预期:
was it a cat i saw? wasitacatisaw is palindrome
内容的提问来源于stack exchange,提问作者Chitransh Mathur
相关产品推荐
相关产品推荐

