拆分多个作业不会产生相同的输出



这是语法吗:

x, y = 0,1
while y < 50:
print(y)
x, y = y, x+y

同上:

x = 0
y = 1
while y < 50:
print(y)
x = y
y = x+y

如果是这样,为什么它们打印不同的结果? 我试图了解第一个代码是如何打印的:1, 1, 3, 5, 8, 13, 21, 34因为当我在脑海中调试并运行第二个代码时,它会打印:1, 2, 8, 16, 32. 基本上我无法理解第一个代码是如何逐行工作的。

它们不一样。

在多个赋值(如x, y = y, x+y(中,首先评估右侧。因此,x+y被评估,则y设置为等于x+y

x=0y=1.然后,x, y = y, x+y计算结果为x, y = 1, 0+1,所以x, y = 1, 1y = 1.

在第二个示例中,x = y导致x = 1,下一行y = x+y导致y = 2

他们给出不同结果的原因是,在第一个代码中,你同时修改 x 和 y,但是在第二个代码中,首先你增加 x,然后你修改 y,这是不利的。

第一个代码在 Python 中使用多个赋值,在其中创建一个元组并循环它并为每个变量赋值

这是Python处理你的行的方式:

(x,y) = (y,x+y)

这段代码是正确的:你可以遍历和观察它,

x,y = 0,1
x,y = 1,1
x,y = 1,2
x,y = 2,3
x,y = 3,5

第二个代码是完全错误的:

x = y
y = x+y

由于 x 在第一行用 y 初始化: 因此,第二行是 y = 2*y,因此您的输出不断加倍

最新更新