Die Fibonacci-Folge ist eine Zahlenfolge bei der die Summe zweier aufeinanderfolgende Zahlen (1. und 2. Vorgänerzahl) die unmittelbar folgende Zahl ergibt. Gestartet wird mit der 0 und 1.
Code: Alles auswählen
# input() gibt einen Text aus und erwartet eine Benutzereingabe. Diese wird als String (Zeichenkette) zurückgegeben.
# int() wandelt diesen Text in ein Integer (ganze Zahl) um
# diese Zahl wird in der Variable 'nterms' gespeichert
# Wieviele Elemente der Fibonacci-Reihe sollen ausgegeben werden?
nterms = int(input("How many terms? "))
# das war warscheinlich ursrünglich ein Kommentar
# et first two terms
# Die beiden ersten Zahlen der Fibonacci-Reihe werden in Variablen gespeichert
# 'n1' enthält den Wert 0
# 'n2' enthält den Wert 1
n1, n2 = 0, 1
# Eine Zählvariable wird festgelegt mit der man die Anzahl der Schleifendurchläufe zählen kann
count = 0
# wenn der Inhalt der Variable 'nterms' kleiner oder gleich null ist ...
if nterms <= 0:
# Ein Text wird ausgegeben
print("Please enter a positive integer")
# sonst, wenn ('elif' ist eine Abkürzung von 'else if') der Inhalt der Variable 'nterms' gleich 1 ist
elif nterms == 1:
# Ein Text wird ausgegeben
print("Fibonacci sequence upto",nterms,":")
# Das erste Element der Fibonacci-Reihe wird ausgegeben
print(n1)
# sonst ... (wenn 'nterms' größer 1 ist ...)
else:
# Eine Textausgabe
print("Fibonacci sequence:")
# solange der Wert der Zählvariable 'count' kleiner ist als der der Variable 'nterms'
while count < nterms:
# drucke die erste Zahl aus
print(n1)
# 'nth' ist der Nachfolger von der 1. und 2. Zahl (also deren Summe)
nth = n1 + n2
# wir rutschen die Reihe weiter hoch, die 2. Zahl wird zur 1. Zahl (also Vorgängerzahl 1)
n1 = n2
# der ehemalige Nachfolger wird zur 2. Vorgängerzahl
n2 = nth
# Die Zählvariable wird um eins erhöht.
count += 1
Ein Beispiel:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34 sind die ersten 10 Zahlen der Fibonacci-Reihe. Wir nehmen mal an der Benutzer hat eine 10 eingegebn.
Im Programm läuft fogendes ab:
- nterms = 10
- n1 = 0 (erste Zahl der Folge)
- n2 = 1 (zweite Zahl der Folge)
- count = 0
- das Programm schaut ob 'nterms' kleiner oder gleich 0 ist
- der Inhalt von 'if nterms <= 0' wird übersprungen, da 'nterms' > 0 ist
- das Programm schaut ob 'nterms' gleich 1 ist
- der Inhalt von 'if nterms == 1' wird übersprungen, da 'nterms' > 0 ist
- der Inhalt von 'else' wird ausgeführt
- 'Fibonacci sequence:' wird ausgegeben
- das Programm schaut ob 'count' kleiner als 'nterms' ist
- da 0 < 10 wird die while Schleife ausgeführt
-
n1 (0) wird ausgegeben (1. Element der Reihe)
- nth = n1 + n2 wird zu nth = 0 + 1 (Die Summe der Vorgängerzahlen ergeben ihren Nachfolger)
- nth = 1 (Das ist jetzt die 3. Zahl der Folge)
- um die 4. Zahl der Folge, im nächsten Schleifendurchlauf, zu berechnen ändern sich jetzt die Vorgängerzahlen
- n1 = n2 wird zu n1 = 1 (2. Zahl der Folge)
- n2 = nth wird zu n2 = 1 (3. Zahl der Folge)
- zur Zählvariable 'count' wird 1 hinzuaddiert (count += 1 ist das Gleiche wie count = count + 1)
- count = 0 + 1 = 1
- es beginnt ein neuer Schleifendurchlauf
- das Programm schaut ob 'count' kleiner als 'nterms' ist
- da 1 < 10 wird die while Schleife ausgeführt
-
n1 (1) wird ausgegeben (2. Element der Reihe)
- nth = n1 + n2 wird zu nth = 1 + 1 (Die Summe der Vorgängerzahlen ergeben ihren Nachfolger)
- nth = 2 (Das ist jetzt die 4. Zahl der Folge)
- um die 5. Zahl der Folge, im nächsten Schleifendurchlauf, zu berechnen ändern sich jetzt die Vorgängerzahlen
- n1 = n2 wird zu n1 = 1 (3. Zahl der Folge)
- n2 = nth wird zu n2 = 2 (4. Zahl der Folge)
- zur Zählvariable 'count' wird 1 hinzuaddiert (count += 1 ist das Gleiche wie count = count + 1)
- count = 1 + 1 = 2
- es beginnt ein neuer Schleifendurchlauf
...
ansonsten kann ich mich meinem Vorredner nur anschließen.