Python代码逐步理解代码

Python代码逐步理解代码,python,range,boolean-logic,Python,Range,Boolean Logic,大家好,我现在正在练习解释代码,并在每一步都写下它的过程!这就是我目前的想法 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

大家好,我现在正在练习解释代码,并在每一步都写下它的过程!这就是我目前的想法

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)
x=4
y=19
完成=错误

而x这是因为在第一个循环中,小计是0。for的
循环只迭代一次,因为它在范围(0,4,4)内的z看起来像这样。然后x和小计变成4。现在subtotal返回到0,对于范围(0,8,4)中的z,for循环变成
,因此这次for循环将迭代两次,因为该范围中有两个可能的数字(0和4),subtotal被添加到x,x是8,x变成16,for循环迭代(注意由于
subtotal=0
语句不在for循环内,小计没有返回到0)再次进行小计,现在小计为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
第二次。

为什么不插入打印语句来报告值并运行代码?这是跟踪这些值的典型低技术方法。此外,现在还不完全清楚你是用什么过程来解释代码的——你是在什么时候记录这些值的?我这样做了,但我不知道这些值是如何变成它们的。只是为了澄清从第3行到第7行,我很好奇为什么它没有变为12,因为目前小计是4,然后是什么n如果你能为我澄清这一点,那就太好了!谢谢你的快速回复!
小计
在第5行退出内部循环时被重置为
0
。好吧,这更有意义!为什么第7行到第11行没有重置,而另一行呢?我很抱歉所有的问题。我花了一个小时在这个问题上花了相当多的时间,我真的很想很好地理解它!第一次在外循环中,内
范围(0,4,4)
只有一个值
[0]
,所以在一个内循环后会被重置。但是第二次在内
范围(0,8,4)
中有
2个值
[0,4]
so绕内部循环两圈,然后外部循环退出。