试图逐步了解斐波那契运动

问题描述 投票:-1回答:3

这是语法:

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.基本上,我无法理解第一个代码是如何逐行工作的。任何帮助,不胜感激!

python python-3.x while-loop fibonacci
3个回答
0
投票

他们不一样。

[在多个分配中,例如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


0
投票

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


0
投票

第一个代码在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,因此您的输出将继续加倍

© www.soinside.com 2019 - 2024. All rights reserved.