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)
- x = 4,y = 19,完成 = false,小计 =4,z = 0
- x = 8,y = 19,完成 = false,小计 =8,z = 0
- 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
第二个.
大家好我目前正在练习解释代码并写下每一步的过程!这是我目前想出的。
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,完成 = false,小计 =4,z = 0
- x = 8,y = 19,完成 = false,小计 =8,z = 0
- 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
第二个.