Python如何实现用户输入与文本文件内容的对比匹配?
输入与文本文件内容匹配失败的原因及解决方法
问题核心原因
你代码的逻辑错误出在列表匹配的判断逻辑上:
- 调用
split()方法后,你从文件读取得到的text是存储单个单词的字符串列表:["HELLO", "WORLD"] - 用户输入处理后得到的
answer同样是列表:["HELLO", "WORLD"] - 你的判断条件
answer in text是检查整个answer列表是否作为一个元素存在于text列表中,但text的元素都是单个字符串,自然永远返回False,进入else分支。
解决方法
根据你的实际需求可选择以下两种方案:
方案1:匹配完整输入和文件全部内容
如果你的需求是判断用户输入的完整内容和文件存储的完整内容完全一致,不需要切割单词,直接对比字符串即可:
# 推荐用with上下文管理器,自动处理文件关闭 with open('text file', 'r', encoding='utf-8') as f: text = f.read().strip().upper() answer = input(": ").strip().upper() if answer == text: print("FOUND NOW") else: print("NOT FOUND")
方案2:匹配输入的所有单词都存在于文件单词列表中
如果你的需求是判断用户输入的每一个单词,都在文件的单词集合中存在,修改判断逻辑即可:
with open('text file', 'r', encoding='utf-8') as f: # 转成集合查询效率更高 text_words = set(f.read().strip().upper().split()) answer_words = input(": ").strip().upper().split() # 判断输入的所有单词都在文件单词集合里 if all(word in text_words for word in answer_words): print("FOUND NOW") else: print("NOT FOUND")
额外注意事项
- 打开文件时建议明确指定编码参数,避免不同系统默认编码不同导致的读取出错
- 确认你读取的文件路径正确,如果文件和脚本不在同一目录下,需要填写绝对路径
内容的提问来源于stack exchange,提问作者Dagon Tooth
相关产品推荐
相关产品推荐

