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

Python实现Mastermind游戏时while循环无限运行问题求助

问题根因与修复方案

代码死循环由3个核心逻辑错误共同导致,修复点如下:

  • 全局guess列表没有在每次猜测完成后清空,第一次猜完后列表长度永远为4,后续调用make_guess时不会再接收用户输入、也不会更新amountOfGuesses,循环判断条件永远满足
  • 猜对成功后没有加break退出外层while循环,就算触发了获胜逻辑也会一直重复执行
  • amountOfGuesses计数逻辑错误,原代码是每输入1个有效数字就加1,实际应该是每完成1次4位完整猜测加1
  • 额外优化:循环上限<=7会允许猜8次,和提示的7次规则不符,调整为<7,同时补充7次没猜对的失败提示
import random

def generate_code():
    """生成4位随机密码,每位取值0-5"""
    code = []
    for i in range(0,4):
        num = random.randint(0,5)
        code.append(num)
    return code
 

def make_guess(): 
    """接收用户的一次4位猜测"""
    guess = []
    while len(guess) < 4:
        element = input("请逐位输入你的猜测数字:" ) 
        if element.isnumeric():
            element = int(element)
            if 0 <= element <=5:
                guess.append(element)
            else:
                print("数字必须在0到5之间")
        else:
            print("请输入0到5之间的有效数字") 
    return guess

def right_position(guess, code):
    """计算位置和数值都正确的位数"""
    count = 0
    for i in range(4):
        if guess[i] == code[i]:
            count +=1
    return count

def wrong_position(guess, code): 
    """计算数值正确但位置错误的位数"""
    count = 0
    temp_code = code[:]
    for num in guess:
        if num in temp_code:
            temp_code.remove(num)
            count +=1
    # 减去位置正确的部分,剩下的就是位置错误的有效计数
    count = count - right_position(guess, code)
    return count

# 变量初始化
code = generate_code()
amount_of_guesses = 0

print("欢迎来到珠玑妙算(Mastermind)游戏。\n你共有7次机会猜测4位密码,每位密码取值为0到5之间的整数。")
while amount_of_guesses < 7:
    guess = make_guess()
    amount_of_guesses +=1
    right = right_position(guess, code)
    wrong = wrong_position(guess, code)
    print(f"你有{right}位数字数值和位置都正确")
    print(f"你有{wrong}位数字数值正确但位置错误")
    if guess == code:
        print(f"恭喜你猜对了!你一共用了{amount_of_guesses}次机会。")
        break
else:
    # 循环正常结束说明7次都没猜对
    print(f"很遗憾,你用完了7次猜测机会,正确密码是{code}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:57:00