Python实现Hangman猜词游戏时出现错判及打印None问题求助
问题定位与修复方案
1 所有猜测均被判定为错误
- 问题位置:
get_word()函数,以及开头冗余的文件打开语句 - 原因:当前代码调用
random.choice("Words.txt")是从"Words.txt"这个字符串本身随机选取单个字符,完全没有读取Words.txt文件里的单词列表,拿到的目标词永远是单个字符/符号,自然和用户输入的猜测匹配不上。开头打开的file1对象也完全没有被使用,还会造成资源泄漏。 - 修复方法:
- 删除开头冗余的
file1 = open("Words.txt")语句 - 修改
get_word()函数逻辑如下:
- 删除开头冗余的
def get_word(): # 读取文件所有非空行作为单词列表 with open("Words.txt", "r", encoding="utf-8") as f: word_list = [line.strip() for line in f if line.strip()] return random.choice(word_list).lower()
2 打印Hangman图案后额外输出None
- 问题位置:所有套了
print()的draw_hangman()调用语句 - 原因:所有
draw_hang_xxx系列绘图函数内部已经通过print()输出了图案,没有显式设置返回值,Python中无return的函数默认返回None,外层再套print()就会把返回的None也打印出来。 - 修复方法:把代码中两处
print(draw_hangman(tries))语句直接改为draw_hangman(tries)即可,不需要额外套print():
第一处位于游戏初始化阶段:
第二处位于循环每轮猜测结束后:print("Let's play Hangman!") # 原语句print(draw_hangman(tries))改为: draw_hangman(tries) print(word_completion)# 原语句print(draw_hangman(tries))改为: draw_hangman(tries) print(word_completion)
内容的提问来源于stack exchange,提问作者Garrett Mastin
相关产品推荐
相关产品推荐

