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

for循环编号输入场景下答案不被接受时如何停在当前序号重复输入

问题根源

你当前代码的问题核心是使用for i in range(0,10)控制编号步进,for循环会自动迭代i的取值,无论用户输入的答案是否重复、是否正确,只要走完一次输入逻辑,i就会自动加1,自然就会跳到下一个编号,无法停在当前编号要求重输。

修复思路

抛弃for循环的自动迭代逻辑,手动控制编号变量的步进规则:只有当用户输入的答案有效(正确且未重复)时,才将编号+1;如果出现答案错误、答案重复的情况,编号保持原值,停在当前步骤要求用户重新输入。

修改后可运行代码
answer = []
lives = 3 # 可替换为你原本的生命值初始值
text = ["DARK", "其他正确答案"] # 可替换为你原本的正确答案集合
tryAgain = True

while tryAgain:
    # 每局游戏重置状态
    answer = []
    lives = 3
    i = 0
    while lives > 0 and i < 10:
        current_num = i + 1
        answerlst = input(f"{current_num}. ").upper()
        if answerlst in text:
            if answerlst in answer:
                print("You repeated your answer!")
                # 重复输入,i不变,停在当前编号
            else:
                answer.append(answerlst)
                # 输入有效,i加1进入下一题
                i += 1
        else:
            print("Incorrect. You just lose a life")
            lives -= 1
            if lives == 0:
                print("GAME OVER!!!!!\n")
                break
    # 若需要10题全答对的胜利提示可自行在此处添加
    ask = input("\nWanna play again? [Y] / [N]: ").upper()
    tryAgain = ask == 'Y'
关键修改说明
  • 移除了原本逻辑混乱的repeat外层循环,用编号变量i的手动步进替代
  • 只有正确且不重复的答案才会触发i += 1,进入下一个编号
  • 重复输入、答案错误时i保持不变,会一直在当前编号要求用户输入,符合预期逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:24:06