Seite 1 von 1
Meine Liste Funktioniert nicht
Verfasst: Donnerstag 13. Juli 2023, 17:39
von Rayano
Hallo ich bin neu,
ich versuche gerade Pyton zu lernen, da ich eine Umschlung anstrebe und im Rahmen einer Reha Maßnahme pyton ein thema wurde.
Hier erstmal der Code:
anfangskapital = float(input("Wie hoch ist dein Startkapital? "))
zinsen = float(input("Wie hoch sind die Jährlichen Zinsen? "))
laufzeit = int(input("Wie lang ist die Laufzeit in Monaten? "))
einzahlung = float(input("Wie hoch ist der Betrag der jeden Monat zurück gelegt wird? "))
Zwischenergebnis = 0
schleife = 1
sparsumme = float(input("Wieviel soll gespart werden? "))
liste =[]
while laufzeit == 0:
zwischenergebnis = (anfangskapital * zinsen / 100 / laufzeit + anfangskapital)
laufzeit = -1
liste.append(zwischenergebnis)
ich bin auf folgendes Problem gestossen: Mein Ziel mit dem Programm ist einen kleinen einfachen anlage rechner zu erstellen. Das zwischenergebnis soll jeweil in die liste gespeichert aber leider bleibt die liste leer.ich habe bereichts im Internet gesucht aber bin zu keiner Lösung gekommen die mir an dieser stelle hilft.
Mein Ziel ist es nicht eine fertige Lösung zu bekommen sondern den Anstoß was ich falsch gemacht habe.
Re: Meine Liste Funktioniert nicht
Verfasst: Donnerstag 13. Juli 2023, 18:39
von Sirius3
Variablen werden komplett klein geschrieben, `Zwischenergebnis` ist falsch geschrieben.
Schau mal, unter welchen Bedingungen die while-Schleife betreten wird? Und welchen Wert dann `laufzeit` annimmt, wie oft wird also die Schleife maximal durchlaufen?
Re: Meine Liste Funktioniert nicht
Verfasst: Donnerstag 13. Juli 2023, 19:26
von Patsche
Code: Alles auswählen
#Moin @Rayano
print("Hallo Rayano")
print("Bitte benutze die Code-Tags </>")

Macht den Code aufjedenfall für Forenuser leserlicher.
Hast du den Code auch eingerückt? Ist wichtig bei Python.
Re: Meine Liste Funktioniert nicht
Verfasst: Donnerstag 13. Juli 2023, 19:45
von Rayano
ok das mit dem code einrücken kannte ich noch nicht, werde ich aber in zukunft machen.
ich habe den code etwas angepasst. er funktioniert jetzt auch so wie er soll.
Code: Alles auswählen
anfangskapital = float(input("Wie hoch ist dein Startkapital? "))
zinsen = float(input("Wie hoch sind die jährlichen Zinsen in Prozent? "))
gesamtlaufzeit = int(input("Wie lang ist die Gesamtlaufzeit in Monaten? "))
einzahlung = float(input("Wie hoch ist der Betrag, der jeden Monat zurückgelegt wird? "))
gesamtkapital = anfangskapital
monat = 1
print("Monat\tAnfangsbestand\tZinsbetrag\tEndbestand")
while monat <= gesamtlaufzeit:
zinsbetrag = gesamtkapital * (zinsen / 100 / 12)
gesamtkapital += zinsbetrag + einzahlung
print(f"{monat}\t{anfangskapital:.2f} €\t{zinsbetrag:.2f} €\t{gesamtkapital:.2f} €")
monat += 1
anfangskapital = gesamtkapital
es ist mein erstes projekt. vorher habe ich bisher nur einige viedeo gesehen und rum probiert ohne ein ziel zu verfolgen. Dies war mein erstes Projekt das ein Ziel hatte: einen ansparplan zu erstellen. Der als tabelle ausgegeben wird. nun muss ich das noch einrücken damit es in der Konsole auch wie eine Tabelle aussieht. Aber ich vermute mal das es nicht funktionieren wird ohne. z.b. HTML zu nutzen und ein Interface zu bauen.
Danke für die Hilfe.
Re: Meine Liste Funktioniert nicht
Verfasst: Donnerstag 13. Juli 2023, 20:25
von kbr
Für die Konsole brauchst Du kein HTML. Die
Funktion reicht völlig.
Re: Meine Liste Funktioniert nicht
Verfasst: Donnerstag 13. Juli 2023, 21:10
von Patsche
Rayano hat geschrieben: Donnerstag 13. Juli 2023, 19:45
....Projekt das ein Ziel hatte: einen ansparplan zu erstellen. Der als tabelle ausgegeben wird. nun muss ich das noch einrücken damit es in der Konsole auch wie eine Tabelle aussieht.
Doch das geht mit dem print-Befehl.
Leerzeichen können ja auch ausgegeben werden. Kannst ja etwas kreativ werden mit Sternchen und Strichen oder so.
Hier mal 2 Beispiele, wie ich das mache ohne GUI nur in der Konsole.....
Code: Alles auswählen
print("*******************************************************************")
print("****************** Bobs Schrauben Discount ******************")
print("****************** Version 1.0 ******************")
print("*******************************************************************")
Code: Alles auswählen
print("-----------------------")
print("| Preise |")
print("| |")
print("| Schrauben: 5Cent |")
print("| Muttern: 3Cent |")
print("| U-Scheiben: 1Cent |")
print("| |")
print("-----------------------")
Re: Meine Liste Funktioniert nicht
Verfasst: Freitag 14. Juli 2023, 00:22
von __blackjack__
@Rayano: Tabellen und auch andere formatierte (und bunte) Konsolenausgaben kann man beispielsweise mit dem `rich`-Modul machen. HTML lässt sich aber auch einfach erzeugen und dann im Browser anschauen. In dem Zusammenhang kann das `markupsafe`-Modul interessant sein, wenn man sich das nicht selbst implementieren will. Oder man nimmt gleich Jinja2 oder eine andere Templating-Bibliothek.
Die ``while``-Schleife in dem Quelltext sollte übrigens eine ``for``-Schleife sein. ``while`` ist für Fälle wo man nicht schon vorher weiss wie oft die Schleife durchlaufen werden wird, sondern eine dynamischere Abbruchbedingung hat. Beispielsweise wenn man so lange ansparen will, bis ein bestimmter Zielbetrag erreicht/überschritten ist.
Re: Meine Liste Funktioniert nicht
Verfasst: Samstag 15. Juli 2023, 11:54
von __blackjack__
@Rayano: Die Zuweisung an `gesamtkapital` vor der Schleife kann man sich sparen wenn man in der Schleife `anfangskapital` verwendet und `gesamtkapital` aus den Werten aus dem aktuellen Schleifendurchlauf berechnet.
`zinsen` müsste eigentlich `zinssatz` heissen. Dann muss man die eigentlichen Zinzen aucht nicht `zinsbetrag` nennen.
Statt Tabulatoren zwischen die Spalten zu setzen, könnte man auch die Breite der einzelnen Spalten beim einsetzen der Platzhalter angeben.
Code: Alles auswählen
#!/usr/bin/env python3
def main():
anfangskapital = float(input("Wie hoch ist dein Startkapital? "))
zinssatz = (
float(input("Wie hoch sind die jährlichen Zinsen in Prozent? ")) / 100
)
gesamtlaufzeit = int(input("Wie lang ist die Gesamtlaufzeit in Monaten? "))
einzahlung = float(
input("Wie hoch ist der Betrag, der jeden Monat zurückgelegt wird? ")
)
print("Monat Anfangsbestand Zinsbetrag Endbestand")
for monat in range(1, gesamtlaufzeit + 1):
zinsen = anfangskapital * (zinssatz / 12)
gesamtkapital = anfangskapital + zinsen + einzahlung
print(
f"{monat:>5}"
f" {anfangskapital:>12.2f} €"
f" {zinsen:>8.2f} €"
f" {gesamtkapital:>8.2f} €"
)
anfangskapital = gesamtkapital
if __name__ == "__main__":
main()
Oder mit `rich`:
Code: Alles auswählen
#!/usr/bin/env python3
rich import print
from rich.table import Table
def main():
anfangskapital = float(input("Wie hoch ist dein Startkapital? "))
zinssatz = (
float(input("Wie hoch sind die jährlichen Zinsen in Prozent? ")) / 100
)
gesamtlaufzeit = int(input("Wie lang ist die Gesamtlaufzeit in Monaten? "))
einzahlung = float(
input("Wie hoch ist der Betrag, der jeden Monat zurückgelegt wird? ")
)
table = Table("Monat", "Anfangsbestand", "Zinsbetrag", "Endbestand")
for monat in range(1, gesamtlaufzeit + 1):
zinsen = anfangskapital * (zinssatz / 12)
gesamtkapital = anfangskapital + zinsen + einzahlung
table.add_row(
str(monat),
f"{anfangskapital:.2f} €",
f"{zinsen:.2f} €",
f"{gesamtkapital:.2f} €",
)
anfangskapital = gesamtkapital
print(table)
if __name__ == "__main__":
main()
Testlauf:
Code: Alles auswählen
Wie hoch ist dein Startkapital? 12345
Wie hoch sind die jährlichen Zinsen in Prozent? 2.3
Wie lang ist die Gesamtlaufzeit in Monaten? 12
Wie hoch ist der Betrag, der jeden Monat zurückgelegt wird? 5
┏━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Monat ┃ Anfangsbestand ┃ Zinsbetrag ┃ Endbestand ┃
┡━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ 1 │ 12345.00 € │ 23.66 € │ 12373.66 € │
│ 2 │ 12373.66 € │ 23.72 € │ 12402.38 € │
│ 3 │ 12402.38 € │ 23.77 € │ 12431.15 € │
│ 4 │ 12431.15 € │ 23.83 € │ 12459.98 € │
│ 5 │ 12459.98 € │ 23.88 € │ 12488.86 € │
│ 6 │ 12488.86 € │ 23.94 € │ 12517.79 € │
│ 7 │ 12517.79 € │ 23.99 € │ 12546.79 € │
│ 8 │ 12546.79 € │ 24.05 € │ 12575.83 € │
│ 9 │ 12575.83 € │ 24.10 € │ 12604.94 € │
│ 10 │ 12604.94 € │ 24.16 € │ 12634.10 € │
│ 11 │ 12634.10 € │ 24.22 € │ 12663.31 € │
│ 12 │ 12663.31 € │ 24.27 € │ 12692.58 € │
└───────┴────────────────┴────────────┴────────────┘