Python 代码 逐步理解代码

Python Code Understanding the code step by step

大家好我目前正在练习解释代码并写下每一步的过程!这是我目前想出的。

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)
  1. x = 4,y = 19,完成 = false,小计 =4,z = 0
  2. x = 8,y = 19,完成 = false,小计 =8,z = 0
  3. x = 16,y = 19,完成 = True,小计 =24,z = 0

我相信我在这里所做的是正确的,但我不确定小计如何变成 4 到 8 到 24?如果有人可以向我解释这一点,那就太好了。

我知道范围是排他性的,所以当 x 值为 4 时,它只通过 for 循环一次,因此小计为 = 4。但是,当 x 值为 8 时,它通过 for 循环到达我的下方站了 2 次,所以这是我迷路的部分。

我的最后一个问题是,每次经过此循环时,每次更改 x 值时小计都会重置吗?这是我无法获得正确小计的原因吗?

如果有人能直观地向我展示或解释,那就太棒了,非常感谢!

这是因为在第一个循环中小计为 0。for 循环只迭代一次,因为它看起来像这样 for z in range(0, 4, 4)。然后 x 和小计变为 4。现在小计回到 0,for 循环变为 for z in range(0, 8, 4) 所以这次 for 循环将迭代两次,因为该范围内有两个可能的数字(0 和 4),小计被添加到 x,它是 8,x 变成 16,for 循环迭代(注意 小计不会返回到 0,因为 subtotal = 0 语句不是在 for 循环内)再次使小计现在 8 + 16。这是 24.

只是检查变量的变化:

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第二个.