如何在循环的if语句中保存变量?Hangman猜词游戏代码问题
Hangman猜词游戏猜对内容无法累加问题修复
错误原因
你每次替换猜词内容时,都基于初始空白模板guess_word操作,没有复用之前轮次已经猜对填充的结果,因此每一轮的新猜对字母都会覆盖之前的填充内容,导致猜对内容无法累加。
修复方法
将替换操作的数据源从初始的guess_word改为存储了历史猜对结果的变量a即可,修正后的代码如下:
word = 'hello' guessed = False guess_word = secret_word(word) a = guess_word # 直接使用生成的空白模板,兼容不同长度的目标单词 while not guessed: letter = ask_letter_from_user() if is_the_letter_in_the_word(word, letter): locatie_letter_in_woord = location_of_letter_in_word(word, letter) # 替换源改为已保存历史猜对结果的a,而非初始空白模板 a = replace(a, locatie_letter_in_woord, letter) print(a) # 补充猜词完成判断逻辑,避免死循环 if '_' not in a: guessed = True
额外优化建议
- 不需要手动写死初始填充串
a = '____',直接使用secret_word返回的空白模板即可适配任意长度的目标单词 - 原代码未设置循环终止条件,补充判断猜词结果无下划线时终止循环,避免程序无限运行
内容的提问来源于stack exchange,提问作者moen1234
相关产品推荐
相关产品推荐

