求修正Python盲数游戏逻辑,适配多组差值为10的初始值
修正盲数游戏代码以适配所有差值为10的初始值
原代码的核心问题
- 循环条件错误:原循环仅在
x>10时执行,当x降到10时直接退出,无法完成最后一步到x=5,y=10的转换。 - 重复除法操作:第一个
if分支中已经执行了除法,但后续又重复执行一次除法,导致数值被错误地除以4。 - 条件判断未互斥:两个
if语句顺序执行,可能同时触发,导致逻辑混乱。 - 浮点除法问题:使用
/会返回浮点数,最终结果会是(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
相关产品推荐
相关产品推荐

