【问题标题】:Why does this code print the fibonacci series? [duplicate]为什么这段代码会打印斐波那契数列? [复制]
【发布时间】:2016-11-21 18:26:18
【问题描述】:

所以我的问题是关于“a, b=b, a+b”行以及“a,b = 0,1”行

这些线是什么意思,它们在做什么?

def fib2(n):
    result = []
    a, b = 0, 1
    while a < n:
        result.append(a)
        a, b = b, a+b
    return result

【问题讨论】:

    标签: python python-3.x while-loop do-while


    【解决方案1】:

    a, b=b, a+b 是一个多重赋值语句。在这样的语句中,右侧的表达式都被评估 首先在任何分配发生之前。右边的表达式是从左到右计算的。

    a,b=0,1 的情况类似,a 得到0b 得到1

    【讨论】:

      【解决方案2】:
      a, b=b, a+b   # is described as
      
      temp = a
      a = b
      b= temp + b
      

      如果你在 shell 中查看 a,b = 0,1

      In [37]: a,b = 0,1
      
      In [38]: a,b
      Out[38]: (0, 1)
      
      In [40]: type((a, b))
      Out[40]: tuple
      
      In [41]: a
      Out[41]: 0
      
      In [42]: b
      Out[42]: 1
      

      所以它只是将变量分配给元组值

      【讨论】:

        猜你喜欢
        • 2018-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-04
        • 1970-01-01
        • 1970-01-01
        • 2013-04-11
        相关资源
        最近更新 更多