这是语法:
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=0
和y=1
。然后,x, y = y, x+y
评估为x, y = 1, 0+1
,因此x, y = 1, 1
。 y = 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,因此您的输出将继续加倍