我很难理解这一点

2024-06-23 19:08:36 发布

您现在位置:Python中文网/ 问答频道 /正文

m = 0
x = 1
while x < 4:
    y = 1
    while y < 3:
        m = m + x + y
        y = y + 1
    x = x + 1
print(m)

输出应该是21,但我不明白,我错过了什么?请帮点忙


Tags: printwhile帮点
2条回答

让我们用“图形”表示。 考虑:

  • x值从1开始,从左到右递增(我们不关心3之后是什么:while x < 4
  • y值(!!!对于每个x!!!)从1开始,从上到下增长(我们不在乎2之后是什么:while y < 3
  • x值用“normal”字体样式显示,而y值用“italic字体”显示
  • 我们关心的所有内容都显示在“bold”中(实际上,“bold”中没有的内容甚至不会由程序计算,为了清楚起见,我将这些值放在这里):
    • x值(x∈{1,2,3})
    • y值(y∈{1,2})
  • x行显示两次,因为对于每个yx被加到总和中
  • 总和:
    • 在分隔线下,从0开始
    • 每个数字都是该列(其上方)数字(粗体)的和(视为部分和)-它们对应于一个迭代,并且包含该迭代的所有迭代
    • 最后,我们将这些值(对于allx迭代)相加,得到最终值

x(→):1234 5 6。。。
y(↓):1111。。。
x(→):1234 5 6。。。
y(↓):2222。。。
y(↓):3333。。。
y(↓):。。。。。。。。。。。。。。。


求和:0+5+7+9=21

  1. m = 0x = 1
  2. 因为x < 4它进入while循环,其中y被设置为1
  3. 因为y < 3它进入嵌套的while
  4. m变成m + x + y = 0 + 1 + 1 = 2y变成y + 1 = 1 + 1 = 2
  5. 回到循环条件:y < 3?对!因为y = 2。所以它又进入了while
  6. m变成m + x + y = 2 + 1 + 2 = 5y变成3
  7. 再回到循环条件:y < 3?不!3不小于3,因此while现在被跳过
  8. x变成x + 1 = 1 + 1 = 2
  9. 回到第一个while条件:x < 4?对!因为x = 2。所以它又进入了循环
  10. 返回步骤2。你知道吗
  11. x最终变成4时,while循环将终止,m将被打印。你知道吗

相关问题 更多 >

    热门问题