Python中for循环与floor division运行结果与手动计算不符求解
Python for循环执行结果与手动计算不符问题解答
你的手动计算逻辑与代码实际执行逻辑存在差异,错误点在于你默认代码会先累加所有range生成的元素值,再统一执行一次整除2操作,但实际代码的total //= 2是写在for循环内部的,每次循环都会在加完当前x后立即执行一次向下整除2的操作。
首先range(1,15,3)生成的序列为:1、4、7、10、13,代码逐次执行过程如下:
- 初始值:
total = 0 - 第一次循环x=1:
total = 0 + 1 = 1→ 整除2后total = 1 // 2 = 0 - 第二次循环x=4:
total = 0 + 4 = 4→ 整除2后total = 4 // 2 = 2 - 第三次循环x=7:
total = 2 + 7 = 9→ 整除2后total = 9 // 2 = 4 - 第四次循环x=10:
total = 4 + 10 = 14→ 整除2后total = 14 // 2 =7 - 第五次循环x=13:
total =7 +13 =20→ 整除2后total =20//2=10
最终打印的total值就是10,和实际运行结果一致。
如果你想要得到手动计算的17的结果,只需要将整除操作移到for循环外部即可,对应代码如下:
total = 0 for x in range(1,15,3): total += x total //= 2 print(total)
内容的提问来源于stack exchange,提问作者John Nguyen
相关产品推荐
相关产品推荐

