Mehrmaliger Funktionsaufruf macht Probleme

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.
Antworten
studi
User
Beiträge: 25
Registriert: Montag 2. Juni 2008, 22:59

Dienstag 3. Juni 2008, 00:00

Hallo an alle.
Ich habe die Funktion aus einem Tutorial kopiert, wenn ich die aber mehrmals aufrufe wird die liste immer laenger. Wie kann man das vermeiden ohne die liste jedesmal zu Loeschen.
Hier die Funktion:

Code: Alles auswählen

def zinsrechner (principal, rate, numyears, year = 1, i=0):
    while year <= numyears:
        principal = principal*(1+rate)
        zinsliste.append ("%3d:  %0.2f" % (year, principal))
        year = year + 1
    return (zinsliste)

Code: Alles auswählen

print zinsrechner (1000,0.05,5)
print zinsrechner (1000,0.05,5)
Ausgabe: z.B
[' 1: 1050.00', ' 2: 1102.50', ' 3: 1157.63', ' 4: 1215.51', ' 5: 1276.28']
[' 1: 1050.00', ' 2: 1102.50', ' 3: 1157.63', ' 4: 1215.51', ' 5: 1276.28', ' 1: 1050.00', ' 2: 1102.50', ' 3: 1157.63', ' 4: 1215.51', ' 5: 1276.28'][/code]
BlackJack

Dienstag 3. Juni 2008, 00:15

Du solltest in Funktionen nichts ändern, was nicht als Argument in die Funktion hinein gekommen ist, oder in der Funktion erzeugt wurde. In diesem Fall solltest Du `zinsliste` auf Modulebene entfernen und in der Funktion an eine leere Liste binden.

Klammern bei ``return`` sind nicht nötig. Das ist keine Funktion. Und aus der ``while``-Schleife würde ich eine ``for``-Schleife machen. Warum `year` als Argument? Und was soll das unbenutzte `i`?
studi
User
Beiträge: 25
Registriert: Montag 2. Juni 2008, 22:59

Dienstag 3. Juni 2008, 19:02

Whau, danke für die hilfe, jetzt lauft's besstens. Vielen Dank.
Ich war ja so stollz auf mein kleines Programm, schein aber doch nicht optimal zu sein. Danke fuer die Tips. :)
Antworten