Python Hangman游戏从文件随机选词出现空词导致直接获胜问题求助
问题根因定位
- 直接原因:读取词汇文件的逻辑没有过滤空行,
splitlines()方法会将文件中的空行转换为空字符串存入contents列表,当random.choice()随机选中空字符串作为word时,获胜判断逻辑会直接判定为获胜:
你的获胜判断逻辑是遍历word的所有字符,确认全部在已猜列表guessed中就标记为获胜。如果word是空字符串,遍历逻辑不会执行,won变量默认保持True,游戏启动后立刻触发获胜流程,直接结束。 - 潜在隐患:当前用
file=open('example.txt')打开文件后没有执行关闭操作,会造成文件资源泄漏。
修复方案
将原有的文件读取代码:
file=open('example.txt') contents = file.read().splitlines() word=random.choice(contents)
替换为以下代码,过滤空行同时自动管理文件资源:
# 读取文件时自动过滤空行、去除每行首尾空白符 with open('example.txt', 'r', encoding='utf-8') as f: contents = [line.strip() for line in f if line.strip()] word = random.choice(contents)
if line.strip()判断会自动跳过空行、仅包含空白字符的无效行with语法会在读取完成后自动关闭文件,避免资源泄漏
内容的提问来源于stack exchange,提问作者kimia
相关产品推荐
相关产品推荐

