这个函数与a,b = b,a + b的作用是什么?

时间:2016-01-25 09:34:23

标签: python function

我正在努力弄清楚python中这个函数实际上做了什么?

def mystery(n):
    a, b = 0, 1
    while a < n:
        print(a)
        a, b = b, a + b

虽然基本的我不完全明白它的成就是什么? 添加基本​​命令以使用字母N(例如 -

)运行它时
def mystery(n):
    a, b = 0, 1
    while a < n:
        print(a)
        a, b = b, a + b

n = int(input("Input the letter N"))
mystery(n)

它提供了最奇怪的输出,例如 -

Input the letter N 20
0
1
1
2
3
5 
8
13

请帮我理解这段代码,

谢谢, 艾萨克。

1 个答案:

答案 0 :(得分:1)

总结:

该函数打印出Fibonacci序列中的第一个N数字。

这是一个以1,1开头的序列,后面的每个术语都是前两个术语的总和。

a, b = b, a + b

这里有2个变量。 a始终是当前字词,b是下一个字词。每次迭代,在打印当前术语后,您将下一个术语分配给a并在此之后计算术语。

a: current term
b: the next term
a+b: the term after that

您可以使用此方法on this SO post了解有关交换变量的详情。

来自@eyquem接受的回答:

  

Python从左到右评估表达式。请注意,在评估分配时,右侧会在左侧之前进行评估。

     

Documentation: Expressions § Evaluation Order