【问题标题】:Different syntax, different result不同的语法,不同的结果
【发布时间】:2019-12-14 23:49:39
【问题描述】:

我正在尝试一个超简单的新手练习。 练习的目的是创建一个斐波那契模式,我尝试了两种我认为会产生相同结果的方法。但是出于某种原因他们没有开火,我不明白为什么。

有什么想法吗?

代码 1

a = 0
b = 1

while b < 100: 
    print(b)
    a = b
    b = a + b

代码 2:

a, b = 0, 1

while b < 100:
    print(b)
    a, b = b, a + b

【问题讨论】:

标签: python-3.x syntax fibonacci


【解决方案1】:

在“CODE 1”中,a = b 使下一行等同于b = b + b,这是不正确的。

在“CODE 2”中,a,b=b,a+b 本质上是new_a = old_b; new_b = old_a + old_b。新值是根据旧值计算的,然后将新值分配给变量。这可以正确计算斐波那契数列。

要在“CODE 1”中正确执行此操作,需要一个临时变量:

t = a
a = b
b = t + b # use original a saved in t to compute b

a,b=b,a+b 消除了对临时变量的需要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-16
    • 1970-01-01
    • 2011-02-07
    • 2020-11-07
    • 2012-08-19
    • 2014-05-02
    • 1970-01-01
    相关资源
    最近更新 更多