Python程序循环重复显示U值输入提示问题排查
问题产生原因
- 核心问题是
while(U == 0)循环的代码边界错误:初始化时U被赋值为0,只要U的值为0,循环体就会反复执行。Python靠缩进判断代码块归属,你的代码将输入语句、列表定义、A/B变量累加的for循环全部放在了while循环的缩进范围内,导致每触发一次循环,就会弹出一次输入提示,同时完整执行一次for循环的累加逻辑。 - 给出的运行结果完全匹配这个逻辑:列表
ent的元素总和为200+101+255+11 = 567,连续输入7次0时,while循环共执行7次,B被累加7次总和为3969;第8次输入非0值9时,循环体仍会完整执行一次累加,B变为3969+567=4536,之后回到循环判断时U不等于0,才退出循环打印结果。
修复方案
调整代码缩进,拆分循环职责:while循环仅负责输入合法性校验,只要用户输入0就反复提示重输,拿到非0的U值后立刻退出循环,再执行单次累加计算即可。
修复后代码如下:
B = 0 A = 0 U = 0 ent = [200, 101, 255, 11] # 仅做输入校验,不重复执行计算逻辑 while U == 0: U = float(input("Enter the value of the letter 'U' :")) # 输入符合要求后,仅执行一次计算 for i in ent: A = A + (i * (1 - (1/10**2)) / 255) - 1/(10**2) B = B + i print(B)
修复后运行逻辑:输入0时只会重复弹出输入提示,不会重复累加B的值;首次输入非0值就会直接完成计算,输出结果567,不会出现多次重复提示的异常表现。
内容的提问来源于stack exchange,提问作者user18923732
相关产品推荐
相关产品推荐

