You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

设置循环终止条件后代码仍持续运行的技术求助

问题分析与修复方案

你的代码存在三个核心问题,导致游戏无法按预期终止:

  1. 外层for循环未终止:你用for word in words遍历单词列表,即便while循环被break,外层for仍会继续迭代下一个单词,游戏会反复重启。
  2. 终止条件逻辑颠倒:if turns >= -1的判断完全错误——你原本想在次数耗尽时结束游戏,但这个条件会在剩余次数还没用完时就触发break。
  3. 次数未重置:每次重新选单词时,turns没有恢复初始值,第一次用完次数后,后续循环会直接触发结束逻辑。

修复后的代码

from random import choice  # 原代码漏了导入choice,必须补上

def handman_game():
    words = ['come','go','hello','welcome','bye-bye','honestly','which','victory','frankly','python']
    guesses = []
    target_word = choice(words)  # 只选一次目标单词,无需外层for循环
    turns = 10
    guess = ''

    while guess != target_word and turns > 0:
        guess = input(f'剩余次数 {turns},请输入单词:')
        if guess == target_word:
            print('猜对了!')
            guesses.append(guess)
            print(f'已猜对的单词:{guesses}')
            break
        else:
            turns -= 1
            print(f'猜错了,还有{turns}次机会')
    
    # 循环结束后判断结束原因
    if turns == 0:
        print(f'游戏结束!正确单词是:{target_word}')

关键修改点

  • 移除多余的外层for循环,只随机选择一个目标单词进行单轮游戏
  • 修正循环终止逻辑:while循环同时判断「未猜对」和「还有剩余次数」,满足任一结束条件时自动退出
  • 删除未使用的game_on变量,简化代码结构
  • 补全choice函数的导入(原代码缺少这一行会直接报错)
  • 优化交互提示信息,让玩家更清楚当前状态

内容的提问来源于stack exchange,提问作者Kolawole Otitolaiye

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 21:57:19