Python代码逐步理解代码

时间:2017-03-16 01:39:42

标签: 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 <= 1:
            finished = True
        else:
            x += x
            print("New x value:", x)
  1. x = 4,y = 19,完成=假,小计= 4,z = 0
  2. x = 8,y = 19,finished = false,subtotal = 8,z = 0
  3. x = 16,y = 19,finish = True,小计= 24,z = 0
  4. 我相信我在这里所做的是正确的,但我不确定小计是如何进入4到8到24的?如果有人可以向我解释这将是伟大的。

    我理解范围是独占的,所以当x值为4时,它只会经过for循环,因此为什么小计为= 4.但是当x值为8时,它会通过for循环到达我的下位2所以这就是我迷失的部分。

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

    如果有人能够直观地向我展示或解释它会非常棒,非常感谢你!

2 个答案:

答案 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第二个。