Seite 1 von 1

Verfasst: Donnerstag 14. September 2006, 10:20
von Craven

Code: Alles auswählen

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

Verfasst: Donnerstag 14. September 2006, 12:41
von BlackJack
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.

Verfasst: Donnerstag 14. September 2006, 17:51
von Craven
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

Verfasst: Donnerstag 14. September 2006, 21:07
von Michael Schneider
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

Verfasst: Freitag 15. September 2006, 14:52
von Ezechielpitau
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