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.
Meine Liste Funktioniert nicht
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?
Schau mal, unter welchen Bedingungen die while-Schleife betreten wird? Und welchen Wert dann `laufzeit` annimmt, wie oft wird also die Schleife maximal durchlaufen?
Code: Alles auswählen
#Moin @Rayano
print("Hallo Rayano")
print("Bitte benutze die Code-Tags </>")
Hast du den Code auch eingerückt? Ist wichtig bei Python.
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.
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.
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
Danke für die Hilfe.
Für die Konsole brauchst Du kein HTML. Die Funktion reicht völlig.
Code: Alles auswählen
print()
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("-----------------------")
- __blackjack__
- User
- Beiträge: 13122
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@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.
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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
- __blackjack__
- User
- Beiträge: 13122
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@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.
Oder mit `rich`:
Testlauf:
`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()
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 € │
└───────┴────────────────┴────────────┴────────────┘
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman