2016-07-19 27 views
-4

So ist meine Frage nach der Zeile „a, b=b, a+b“ sowie die Zeile „a,b = 0,1Warum druckt dieser Code die Fibonacci-Serie?

Was diese Zeilen bedeuten, was tun sie?

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

Antwort

0

a, b=b, a+b ist eine Mehrfachzuordnung Aussage. In einer solchen Anweisung werden Ausdrücke auf der rechten Seite alle zuerst ausgewertet, bevor irgendwelche der Zuweisungen stattfinden. Die Ausdrücke auf der rechten Seite werden von links nach rechts ausgewertet.

Ähnlich ist der Fall für a,b=0,1, wo a bekommt 0 und b1 bekommt.

-1
a, b=b, a+b # is described as 

temp = a 
a = b 
b= temp + b 

und wenn man sich a,b = 0,1 in der Schale sehen

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 

es so nur Zuordnung von Variablen zu dem Tupel Werte