Seite 1 von 1

Newbie: Frage zur Fibonacci-Folge aus dem Tutorial

Verfasst: Montag 6. August 2018, 14:22
von MuMPiTz
Aus dem Tutorial
>>> # Fibonacci-Folge:
... # Die Summe der letzten beiden Elemente ergibt das nächste
... a, b = 0, 1
>>> while b < 10:
... print(b)
... a, b = b, a+b
...
1
1
2
3
5
8
Mich verwirrt das ein wenig:

Zuerst ist a = 0 und b = 1, er gibt also zuallererst 1 aus. Nach der Ausgabe verändern sich die Variablen, entsprechend des Codes:
a, b = b, a+b
Das müsste doch bedeuten:
a = b, also a = 1
UND
b = a + b = 1 + 1 = 2

Demnach sollte er doch bei der nächsten (der zweiten) Schleife, b entsprechend "2" ausgeben. Er gibt aber wieder eine "1" aus. Wieso tut er das?





Wenn ich das ganze leicht anders schreiben würde, nämlich so:
a = 0
b = 1
while b < 10:
print(b)
a = b
b = a + b
Würde er die Zahlen auch nach meiner Logik ausgeben, also:
1
2
...




Ich frage mich nun, was der Unterschied ist. Ich dachte eigentlich

a, b = 0, 1

wäre wie im Tutorial erklärt, einfach eine Mehrfachzuweisung, also quasi das Selbe wie:
a = 0
b= 1

aber anscheinend ist dem nicht so. Kann mir jemand meinen Denkfehler erklären?

Re: Newbie: Frage zur Fibonacci-Folge aus dem Tutorial

Verfasst: Montag 6. August 2018, 14:32
von ThomasL
MuMPiTz hat geschrieben: Montag 6. August 2018, 14:22 Das müsste doch bedeuten:
a = b, also a = 1
UND
b = a + b = 1 + 1 = 2
Hi,
nein, es wird erst die rechte Seite komplett berechnet und dann der linken Seite zugewiesen.
a, b = b, a+b ist beim ersten Durchlauf a, b = 1, 0+1

Nur dadurch kann man z.B. auch mit a, b = b, a einen Wertetausch vornehmen, ohne eine dritte Variable zu benötigen.

Schaue mal hier: https://docs.python.org/3/reference/exp ... tion-order

Re: Newbie: Frage zur Fibonacci-Folge aus dem Tutorial

Verfasst: Montag 6. August 2018, 15:24
von MuMPiTz
ThomasL hat geschrieben: Montag 6. August 2018, 14:32
MuMPiTz hat geschrieben: Montag 6. August 2018, 14:22 Das müsste doch bedeuten:
a = b, also a = 1
UND
b = a + b = 1 + 1 = 2
Hi,
nein, es wird erst die rechte Seite komplett berechnet und dann der linken Seite zugewiesen.
a, b = b, a+b ist beim ersten Durchlauf a, b = 1, 0+1

Nur dadurch kann man z.B. auch mit a, b = b, a einen Wertetausch vornehmen, ohne eine dritte Variable zu benötigen.

Schaue mal hier: https://docs.python.org/3/reference/exp ... tion-order
Verstehe, vielen Dank!