Python单词翻译学习程序仅特定词汇生效问题求助
问题分析与修复方案
问题原因
readlines()读取文件时,会保留每一行末尾的换行符\n(除了文件最后一行)。比如你的read列表实际内容是:["auto\n", "car\n", "regalo\n", "gift\n", "lampada\n", "lamp"]
当你输入car时,程序会拿它和"car\n"做比较,自然不匹配;只有最后一行的lamp没有换行符,所以能正常验证。
修复后的代码
import random while True: # 用with语句自动管理文件资源,避免遗漏关闭操作 with open('Informazioni.txt', 'r+') as k: # 读取每一行并去除首尾空白(包括换行符、空格) read = [line.strip() for line in k.readlines()] while True: domanda = random.randint(0, len(read) - 1) if domanda % 2 == 0: risposta = domanda + 1 break question = read[domanda] solution = read[risposta] print(question) while True: # 输入内容也去除首尾空白,避免用户误输入空格导致匹配失败 response = input().strip() if response == solution: break
额外优化说明
- 替换了冗余的
a=1循环,改用while True更直观 - 对输入内容也做了
strip()处理,避免用户不小心输入空格导致验证失败 - 使用
with语句自动处理文件的打开和关闭,更安全规范
内容的提问来源于stack exchange,提问作者Emasei Figo
相关产品推荐
相关产品推荐

