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
相关产品推荐
相关产品推荐

