如何判断循环中变量使用是否正确?BMI计算循环异常咨询
问题分析与解决
你的代码陷入无限循环的原因很明确:只在循环外计算了一次BMI,循环体内没有更新这个变量。
初始计算的BMI是 43/(1.6²)≈16.95,确实小于18。但进入循环后,你只修改了weight,却没有重新计算bmi——这意味着循环条件bmi<18永远为真,程序会一直递增weight并输出,直到数值变得极大。
修正后的代码
weight = 43 height = 1.6**2 while True: bmi = weight / height if bmi >= 18: break print(weight) weight += 0.1
或者把BMI计算放到循环迭代流程里,每次更新weight后同步更新bmi:
weight = 43 height = 1.6**2 bmi = weight / height while bmi < 18: print(weight) weight += 0.1 bmi = weight / height # 每次更新weight后重新计算BMI
怎么判断循环中变量是否正确?
- 先理清循环终止条件依赖哪些变量:比如这里终止条件是
bmi<18,而bmi由weight和height决定,height是固定值,所以每次weight变化后,必须重新计算bmi,否则终止条件永远不会改变。 - 检查循环体内是否更新了所有影响终止条件的变量:确保每次迭代时,判断条件用的都是最新的变量值,而非初始值。
- 调试时可以临时打印关键变量(比如每次循环都打印
bmi),直观看到变量变化是否符合预期,快速定位问题。
内容的提问来源于stack exchange,提问作者zhong en
相关产品推荐
相关产品推荐

