Seite 1 von 1

Harmonische Reihe

Verfasst: Donnerstag 5. Dezember 2013, 12:19
von zeta3010
Hi alle zusammen, ich soll ein Programm schreiben was mir die harmonische Reihe aus
(1/n) von 1 bis unendlich berechnet bzw das Ergebniss der Summe von 1 bis n ausgibt, wobei n eingelesen werden soll

Ich möchte das über eine while Schleife machen, die folgendermaßen aussieht:

Code: Alles auswählen

print"________________________________________________________\n"
print"Rechner der harmonischen Reihe des Quotienten (1/n) fuer n gegen unendlich."
print"________________________________________________________\n"

eingabe=input()

i=1.0

while i<=eingabe:
  i=i/(i+1.0)
  print "",i
Nur gibt er mir eine endlosschleife mit lauter 0en aus.
Wo ist der Fehler?

Danke schonmal für die Hilfe

Re: Harmonische Reihe

Verfasst: Donnerstag 5. Dezember 2013, 12:31
von Sirius3
@zeta3010: an Deiner Stelle würde ich mir zuerst anschauen was 1/2, 1/3, 1/4, ... ergibt, wenn Du das in Python eingibst und mich dann daran erinnern, dass es so etwas wie Ganzzahldivision gibt. Wenn Du dann Floatingpoint-Division durchgeführt hast, kannst Du Dich fragen, warum i nie größer als 1 geschweige denn »eingabe« werden kann.

Re: Harmonische Reihe

Verfasst: Donnerstag 5. Dezember 2013, 12:42
von zeta3010
an Deiner Stelle würde ich mir zuerst anschauen was 1/2, 1/3, 1/4, ... ergibt
Ok hab ich versucht, hab

Code: Alles auswählen

i= 1/4 ersetzt durch i=1.0/4.0
Jetzt gibt er mir allerdings als Endlosschleife laute Dezimalstellen aus.

Re: Harmonische Reihe

Verfasst: Donnerstag 5. Dezember 2013, 12:47
von BlackJack
@zeta3010: Dann denk mal über den letzten Satz von Sirius3 nach.

Sonstiges: Verwende in Python 2 kein `input()`. Damit wird die Eingabe als Python-Ausdruck ausgewertet und der Anwender kann damit nahezu beliebigen Code ausführen. Was auch der Grund ist warum eine Fehlerbehandlung sehr schwer ist, weil im Grunde *alles* passieren kann. Lass den Benutzer mit `raw_input()` eine Zeichenkette eingeben und wandle die gezielt in einen Typ um mit dem Du weiterarbeiten willst. Zum Beispiel in ein `int` wenn es eine ganze Zahl sein soll.

Dann würde ich Funktionen empfehlen die das Problem in Unterprobleme aufteilen. Zum Beispiel könnte man eine Generatorfunktion schreiben (Stichwort ``yield``) welche die Quotienten als endlosen Iterator liefert. Da kann man dann über die ersten `N` (Eingabe des Benutzers) Elemente iterieren, beziehungsweise sich einen solchen Iterator mit der passenden Funktion aus dem `itertools`-Modul erstellen. Und für das Aufsummieren gibt es auch schon eine fertige Funktion in Python.

Re: Harmonische Reihe

Verfasst: Donnerstag 5. Dezember 2013, 13:01
von snafu
Allein der Umstand, dass der Nenner immer um eins größer ist, als der Zähler (wobei der Zähler bei eins beginnt), sollte zu denken geben: Wie soll eine solche Gleichung jemals größer als eins werden, geschweige denn größer als die Eingabe (die ja vermutlich ganzzahlig ist)?