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

Python While循环无法终止求助:崩溃游戏触发逻辑异常

问题分析与修复方案

你的代码存在两个核心问题,导致循环无法终止:

  • 第一个while循环是死循环:第一个while game == 1循环里没有任何修改game变量的逻辑,if game != 1的条件永远不会成立,所以这个循环会一直执行数值增长和打印操作,永远跳不到后面的第二个循环。
  • 第二个循环逻辑完全偏离需求:就算第一个循环能结束,第二个循环也只随机一次数值,不是目标值就直接退出,不会持续检测;而且当前代码里num的增长和崩溃检测完全脱节,没有关联起来,根本实现不了“数值到1、50或100时触发崩溃”的需求。

修复后的代码

下面是符合你需求的版本:让num增长的同时同步检测是否触发崩溃条件,达到目标值时立即终止游戏:

import random
import time

game = 1
num = 1.00

while game == 1:
    # 处理浮点精度问题,每次增长后保留两位小数
    num = round(num + 0.01, 2)
    print(num)
    time.sleep(0.1)
    
    # 检查当前数值是否到达崩溃触发点
    if num in [1.00, 50.00, 100.00]:
        print("Crash!")
        game -= 1
        break
    
    # 如果你的需求是数值到达目标值时**随机概率**崩溃,可启用以下代码替换上面的判断
    # crash = random.randint(1, 100)
    # if crash == 1 or crash == 50 or crash == 100:
    #     print("Crash!")
    #     game -= 1
    #     break

关键修改点

  • 将数值增长和崩溃检测合并到同一个循环,确保逻辑同步执行
  • 用round处理浮点精度问题,避免因浮点运算误差导致目标值判断失效
  • 移除了无意义的独立循环,让代码逻辑更连贯清晰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:41:29