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

求修正Python盲数游戏逻辑,适配多组差值为10的初始值

修正盲数游戏代码以适配所有差值为10的初始值

原代码的核心问题

  1. 循环条件错误:原循环仅在x>10时执行,当x降到10时直接退出,无法完成最后一步到x=5,y=10的转换。
  2. 重复除法操作:第一个if分支中已经执行了除法,但后续又重复执行一次除法,导致数值被错误地除以4。
  3. 条件判断未互斥:两个if语句顺序执行,可能同时触发,导致逻辑混乱。
  4. 浮点除法问题:使用/会返回浮点数,最终结果会是(5.0, 10.0),不符合预期的整数结果。

修正后的代码

def blind_game(x, y):
    # 循环直到达到目标值x=5、y=10
    while not (x == 5 and y == 10):
        print(x, y)
        # 检查调整条件
        if x + 5 == y:
            # 保持x不变,y加5后再分别除以2
            y += 5
            x = x // 2
            y = y // 2
        elif y - 5 == x:
            # 保持y不变,x减5后再分别除以2
            x -= 5
            x = x // 2
            y = y // 2
        else:
            # 直接分别除以2
            x = x // 2
            y = y // 2
    # 打印最终目标值
    print(x, y)
    return x, y

# 测试不同初始值
print("测试x=100,y=110:")
blind_game(100, 110)
print("\n测试x=200,y=210:")
blind_game(200, 210)
print("\n测试x=80,y=90:")
blind_game(80, 90)

代码说明

  • 循环条件:改为while not (x ==5 and y ==10),确保只有达到目标值时才停止循环。
  • 互斥条件判断:使用elif保证同一时间只会触发一个调整逻辑,避免冲突。
  • 整数除法:用//替代/,确保所有操作结果都是整数,符合游戏的数值要求。
  • 调整逻辑:严格遵循规则,仅在满足x+5==y或y-5==x时调整对应数值,再执行除法操作;否则直接除法。

运行修正后的代码,所有差值为10的初始值都能按照预期流程运行,最终得到x=5,y=10的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 21:07:01