大家好,我目前正在练习解释代码并在每一步中写下它的过程!这就是我目前提出的。
x = 4
y = 19
finished = False
while x <= y and not finished:
subtotal = 0
for z in range(0, x, 4):
print(x)
subtotal += x
print("This is subtotal", subtotal)
if y // x <= 1:
finished = True
else:
x += x
print("New x value:", x)
我相信我在这里所做的是正确的,但我不确定小计是如何进入4到8到24的?如果有人可以向我解释这将是伟大的。
我理解范围是独占的,所以当x值为4时,它只会经过for循环,因此为什么小计为= 4.但是当x值为8时,它会通过for循环到达我的下位2所以这就是我迷失的部分。
我的最后一个问题是,每次经过这个循环时,每次x值改变时小计都会重置吗?这是我无法获得正确小计的原因吗?
如果有人能够直观地向我展示或解释它会非常棒,非常感谢你!
答案 0 :(得分:0)
这是因为在第一个循环中小计为0. for
循环只迭代一次,因为它看起来像for z in range(0, 4, 4)
。然后x和小计变为4. NOW小计返回到0并且for循环变为for z in range(0, 8, 4)
所以这次for循环将迭代两次,因为该范围内有两个可能的数字(0和4),小计被添加到x,它是8,x变为16,for循环迭代(注意小计不会被带回0,因为subtotal = 0
语句不是&#39;在for循环中)再次使小计现在为8 + 16.这是24。
答案 1 :(得分:0)
只检查变量的变化:
Start: x = 4, y = 19, finished = False
1. subtotal = 0
2. z = 0
3. subtotal += x (0+4) = 4
4. x += x (4+4) = 8
5. subtotal = 0
6. z = 0
7. subtotal += x (0+8) = 8
8. x += x (8+8) = 16
9. z = 4
10. subtotal += x (8+16) = 24
11. finished = True
End: x = 16, y = 19, finished = True, z = 4, subtotal = 24
当内循环退出时, subtotal
才会重置为0
,因为x
变大,内循环重复次数更多次,1
第一次2
第二个。