staging.inyokaproject.org

Fibonacci-Reihe in Python

Status: Ungelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

kimberly

Anmeldungsdatum:
1. März 2023

Beiträge: Zähle...

Ich versuche, eine Fibonacci-Reihe zu konstruieren und jedes Element aufzulisten. Ich möchte angeben, dass kein Element in der Fibonacci-Folge größer als eine bestimmte Zahl sein sollte. Code:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
def myFib(max_count):
    a = 1
    b = 1
    fiblist = [1, 1]
    while fiblist[-1] <= max_count:
        temp = a
        a = b
        b = temp + a
        fiblist.append(b)
        print(fiblist)
    return fiblist

myFib(20) 

Ich versuche, eine Fibonacci-Reihe zu konstruieren und jedes Element aufzulisten. Ich möchte eine Bedingung festlegen, die verhindert, dass die Fibonacci-Liste Elemente enthält, die größer als ein in dieser Dokumentation angegebener Zielwert sind. Ich habe eine Funktion namens myFib geschrieben, um diese Liste zu erstellen, und eine Zahl von 20 als Parameter übergeben, in der Erwartung, dass meine Fibonacci-Liste nur Werte unter 20 enthalten würde. Meine Schleife endet nach dem Anhängen von Element 21, und ich versuche es herauszufinden heraus, was ich falsch mache. Nachdem ich das zum Laufen gebracht habe, möchte ich es für einen Zielwert von 2000000 tun, daher versuche ich, den Mechanismus herauszufinden, bevor ich einen großen Zielbetrag festlege. Jede Hilfe wäre sehr willkommen

Ich erhalte die folgende Ausgabe:

[1, 1, 2, 3, 5, 8, 13, 21]

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17432

kimberly schrieb:

Code:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
def myFib(max_count):
    a = 1
    b = 1
    fiblist = [1, 1]
    while fiblist[-1] <= max_count:
        temp = a
        a = b
        b = temp + a
        fiblist.append(b)
        print(fiblist)
    return fiblist

myFib(20) 

Ich versuche, eine Fibonacci-Reihe zu konstruieren und jedes Element aufzulisten. Ich möchte eine Bedingung festlegen, die verhindert, dass die Fibonacci-Liste Elemente enthält, die größer als ein in dieser Dokumentation angegebener Zielwert sind. Ich habe eine Funktion namens myFib geschrieben, um diese Liste zu erstellen, und eine Zahl von 20 als Parameter übergeben, in der Erwartung, dass meine Fibonacci-Liste nur Werte unter 20 enthalten würde. (...) Ich erhalte die folgende Ausgabe:

[1, 1, 2, 3, 5, 8, 13, 21]

Nun, beim letzten Schritt ist while fiblist[-1] <= 20 13, also kleiner als 20 und Du fügst noch ein Element hinzu, dann ist es größer als 20, also hast Du als letztes eines in der Liste, das größer oder gleich des Grenzwerts ist.

Du müsstest im letzten Schritt die Liste um das letzte Element kürzen oder vor dem Anhängen noch mal prüfen.

snafu1

Avatar von snafu1

Anmeldungsdatum:
5. September 2007

Beiträge: 2119

Seit Python 3.8 lässt sich das relativ kompakt mit dem sogenannten Walrus-Operator lösen:

1
2
3
4
5
6
7
def get_fibs(max_count):
    fibs = [1, 1]
    while (new_fib := fibs[-2] + fibs[-1]) <= max_count:
        fibs.append(new_fib)
    return fibs

print(get_fibs(20))
Antworten |