Seite 1 von 1

Mehrmaliger Funktionsaufruf macht Probleme

Verfasst: Dienstag 3. Juni 2008, 00:00
von studi
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]

Verfasst: Dienstag 3. Juni 2008, 00:15
von BlackJack
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`?

Verfasst: Dienstag 3. Juni 2008, 19:02
von studi
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. :)