解释此代码的用途,并解释它如何实现其目的

时间:2016-03-14 12:54:09

标签: python

解释这段代码的目的,并逐一解释它如何实现其目的:

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

我理解前4行是什么意思: - 将下面的代码定义为mystery(n),其中n是数字 -a = 0,b = 1 - 只要a小于n,下面的代码就会运行 印刷品 我对最后一个有问题。这是指a = b和b = a + b吗?如果是这样,那么例如神秘(10)的输出与我的理论不匹配,所以我知道它的其他东西。 神秘的输出(10):

0
1
1
2
3
5
8

2 个答案:

答案 0 :(得分:0)

  

是否意味着a = b和b = a + b?

答案是:是的

这些是斐波那契数字:https://en.wikipedia.org/wiki/Fibonacci_number

答案 1 :(得分:0)

当你有a,b = b, a + b时,你可以把它放几行:

a,  b
=   =
b  a+b

它几乎与:

相同
a = b
b = a + b

除了b = a + b使用a的旧值。这是因为在评估完成之前不会定义变量。顶部也是如此,除了在顶部我们并不真正需要它。我们可以说a = 0b = 1并没有遇到任何意外行为,但是在a,b = b, a + b的情况下,如果我们在定义另一个变量之前定义了一个变量,它将无法正常工作。评估需要在两个定义之前进行,否则就不对了。