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

单词打乱游戏重打乱功能重复输出问题技术求助

解决单词打乱游戏重打乱后的重复定义输出问题

你的问题根源在于递归调用game函数后未终止当前函数的执行:每次用户输入're'触发递归时,新的game实例启动运行,但原函数的执行流程并没有停止。等递归的game执行完毕返回后,原函数会继续走到print(n,":",d)这一行,因此每递归一次,最后就会多打印一次单词定义。

方案1:用循环替代递归(推荐)

递归在这里并非必要,用while循环可以更直观地控制流程,彻底避免多层函数栈带来的重复执行问题:

def game(n,d):
    a = True
    while True:
        scrambled = shuffler(n)
        guess = input(f"{scrambled}  're' to rescramble:  ")
        if guess == 're':
            continue  # 直接进入下一轮循环,生成新的打乱单词
        elif guess == n:
            print("Correct")
            break
        else:
            print("Incorrect")
            a = False
            break
    print(n,":",d)
    return a

方案2:递归调用后立即返回

如果坚持使用递归,在调用game(n,d)后要立刻return,阻止当前函数继续执行后续的打印语句:

def game(n,d):
    a = True
    scrambled = shuffler(n)
    guess = input(f"{scrambled}  're' to rescramble:  ")
    if guess == 're':
        # 递归调用后直接返回,不执行后续的print
        return game(n,d)
    elif guess == n:
        print("Correct")
    else:
        print("Incorrect")
        a = False
    print(n,":",d)
    return a

两种方案都能实现:无论用户重打乱多少次,只有当用户完成猜测(输入正确或错误答案)时,才会打印一次单词定义,不会出现重复输出的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:15:30