2017-03-16 52 views
0

大家好我目前正在练习口译代码,并且写下每一步的过程!这是我目前提出的。Python代码一步一步了解代码

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,成品=假,小计= 8,z = 0的
  3. X = 16,Y = 19,成品=真,小计= 24,Z = 0

我相信我在这里做是正确的,但我不知道小计会怎样4-8到24?如果有人能够向我解释这将是伟大的。

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

我最后一个问题是每次它经历这个循环时,每次x值改变时小计是否得到重置?这是否会成为我无法获得正确小计的原因?

如果有人可以直观地向我展示或解释它会很棒非常感谢!

+0

为什么不插入打印语句来报告值并运行代码?这是追踪这些价值的典型低技术方式。另外,还不完全清楚你用什么过程来解释代码 - 你在什么时候记录这些值? – Prune

+0

我确实这样做了,但我无法弄清楚价值观是如何成为他们正在成为的。 – ProFesh

回答

0

只是检查改动的变量:仅被重置为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循环退出,如x变大,内循环重复次数多,1第一次,2第二次。

+0

只是为了澄清从第3行到第7行,我很好奇它为什么不改变为12,因为目前小计有4,然后当你加8时它不是12?如果你能为我澄清这将是伟大的!感谢您的快速响应! – ProFesh

+0

当第5行退出内循环时,“小计”被重置为“0”。 – AChampion

+0

好吧,更有意义!为什么从第7行到第11行不能重置,但另一个呢?我很抱歉所有的问题。我在这方面花了相当多的时间,真的很想理解它! – ProFesh

0

这是因为在第一个循环中小计为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 。