Fibonacci-Reihe bis in eine Tiefe von x

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
Craven
User
Beiträge: 223
Registriert: Dienstag 24. Januar 2006, 13:37

Beitragvon Craven » Donnerstag 14. September 2006, 10:20

[code=] file2.write(str(fibo[-1]))
IOError: (0, 'Error')[/code]

:wink:

Code: Alles auswählen

q = 'q = %s; print q %% repr(q)'; print q % repr(q)
BlackJack

Beitragvon BlackJack » Donnerstag 14. September 2006, 12:41

Deine `resuming()` Funktion funktioniert nicht. Man kann nicht einfach Zeilen vom Dateiende her mit negativen Zahlen ansprechen. Die Angabe ist die Puffergrösse die Python zum lesen von Zeilen benutzen soll. Werte >0 geben die Maximallänge an, Werte <=0 haben keinen Effekt. Du liest dort immer die ersten beiden Zeilen ein.

Und 'a+' ist als Dateimodus höchst undefiniert. Man sollte Dateien die man mit 'a' öffnet nur schreiben, nicht lesen und kein `seek()` durchführen.
Benutzeravatar
Craven
User
Beiträge: 223
Registriert: Dienstag 24. Januar 2006, 13:37

Beitragvon Craven » Donnerstag 14. September 2006, 17:51

Hi Blackjack!

Danke für deine Antwort

Hast du eine Idee/Tipp, wie ich das realisieren könnte?
Ansonsten gehts auch ohne resuming, was eher als test gedacht war ... :wink:

MfG,
Craven

Code: Alles auswählen

q = 'q = %s; print q %% repr(q)'; print q % repr(q)
Benutzeravatar
Michael Schneider
User
Beiträge: 567
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Bremen
Kontaktdaten:

Beitragvon Michael Schneider » Donnerstag 14. September 2006, 21:07

Craven hat geschrieben:Hast du eine Idee/Tipp, wie ich das realisieren könnte?
Ansonsten gehts auch ohne resuming, was eher als test gedacht war ... :wink:


Hi Craven,

erstmal generell statt "a+" sowas:

Code: Alles auswählen

try:
    file2 = open(Pfad, "r+")
    file2.seek(0,2)    ##  Cursor zum Dateiende
except IOError:
    file2 = open(Pfad, "w+")

Ich habe mich noch nicht weiter in den Code reingedacht, aber wenn Du nur die beiden letzten Werte brauchst (zum Addieren), dann solltest Du die nicht dauernd speichern und neu lesen. Das bremst unnötig.

Grüße,
Michael
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Ezechielpitau
User
Beiträge: 7
Registriert: Freitag 25. August 2006, 16:00

Beitragvon Ezechielpitau » Freitag 15. September 2006, 14:52

Ansonsten gibt es auch eine nicht-rekursive Funktion zur Berechnung. Dann sinnvoll, wenn du nur den Wert für einzelne, sehr große Zahlen berechnen willst und nicht die ganze Reihe.

siehe Formel von Binet http://www.ijon.de/mathe/fibonacci/node2.html#0002200

Wer ist online?

Mitglieder in diesem Forum: jan.b