Python Menü - Funktionen einbauen?
Hallo, ich möchte in mein Menü gerne Funktionen einbauen, z.B. um meinen neuen Kontostand zu berechnen, nachdem ich eine Einzahlung getätigt habe. Ich vermute, dass ich irgendetwas übersehe, da ich eine seltsame Antwort erhalte, wenn ich mein Programm laufen lasse.
kontostand = 0
while True:
# Menüauswahl
print("\n--- Menü ---")
print("1 - Kontostand anzeigen")
print("2 - Geld einzahlen")
print("3 - Geld auszahlen")
print("4 - Schulden berechnen")
print("6 - Beenden")
auswahl = input("Auswahl treffen: ")
# Kontostand anzeigen
if auswahl == "1":
print(kontostand)
# Geld einzahlen
elif auswahl == "2":
einzahlen = input("Welchen Betrag möchten Sie einzahlen?")
def neuer_kontostand(kontostand, einzahlen):
neuer_kontostand = kontostand + einzahlen
print(f"Ihr neuer Kontostand beträgt: {neuer_kontostand} Euro")
Die Antwort lautet folgendermaßen:
Auswahl treffen: 2
Welchen Betrag möchten Sie einzahlen? 100
Ihr neuer Kontostand beträgt: <function neuer_kontostand at 0x000001E40185CF70> Euro
???
1 Antwort
In dem Kontext, in dem deine print-Funktion aufgerufen wird, ist unter dem Namen neuer_kontostand nur die Funktion bekannt, die du dort definiert hast. Python versucht infolgedessen, diese auszugeben.
Um zu dem Ziel zu kommen, welches du wohl erreichen möchtest, könnte man der Funktion anweisen, einen expliziten Rückgabewert zu liefern.
def berechne_kontostand(kontostand, einzahlen):
neuer_kontostand = kontostand + einzahlen
return neuer_kontostand
und sie dann im elif aufrufen.
einzahlen = input("Welchen Betrag möchten Sie einzahlen?")
kontostand = berechne_kontostand(kontostand, einzahlen)
print(f"Ihr neuer Kontostand beträgt: {neuer_kontostand} Euro")
Günstigerweise sollte die Funktion außerhalb der while-Schleife definiert werden. Zum einen dient sie doch als globales Werkzeug und zum anderen macht es das Programm übersichtlicher.
Des Weiteren wäre ein anderer Name, der die Funktion als Funktion kennzeichnet, besser. Üblicherweise werden für Funktionen entweder Verben oder Imperativformen (wie hier: Berechne Kontostand) verwendet.
Statt eine neue Variable anzulegen, würde ich den Wert der vorhandenen Variable kontostand überschreiben. So kann der Wert über mehrere Schleifeniterationen hinweg weiterverwendet werden.