ich habe folgendes Problem.
Wenn ich im ersten Menü die Funktion 1. auswähle, im 2. Menü auch dann funktioniert alles. Wähle ich aber nun anschließend im 1. Menü wieder die 1, dann wird mir das 2. Menü nicht angezeigt.
Der Fehler tritt komischerweise nicht immer auf, ich finde leider nicht heraus woran es liegt.
Wäre toll wenn mir da jemand helfen könnte, danke schonmal!
Code: Alles auswählen
# Funktion zur Berechnung der PayPal-Gebühren
def gebühr_berechnen(zahlungsart, betrag):
# Gebührenraten je nach Zahlungstyp festlegen, vorderer Wert Prozentsatz, hinterer Wert fixer Betrag
gebührenrate = {
"1": (0.0249, 0.35), # Waren/Dienstleistungen
"2": (0, 0), # Freunde
"3": (0.0249, 0.35), # Spenden sammeln
"4": (0.0499, 0.09) # Mikrozahlung (Beträge bis 5€)
}
# Wenn Zahlungstyp nicht gefunden wird, gib None zurück
if zahlungsart not in gebührenrate:
return None, None
# Gebühr berechnen
gebühr_prozentsatz, fixe_gebühr = gebührenrate[zahlungsart]
gebühr = betrag * gebühr_prozentsatz + fixe_gebühr
gesamt_betrag = betrag - gebühr
return round (gebühr, 2), round (gesamt_betrag, 2)
# Hauptprogramm
def main():
print("Willkommen beim PayPal-Gebührenrechner!")
while True:
print("\nMenü:")
print("1. Gebühr berechnen")
print("2. Gespeicherte Berechnungen anzeigen")
print("3. Gespeicherte Berechnungen löschen")
print("4. Programm beenden")
menüwahl = input("Bitte wählen Sie die gewünschte Funktion durch eingabe von 1, 2, 3 oder 4: ")
if menüwahl == "1":
display_payment_options()
payment_choice = input("Bitte wählen Sie die Art der Zahlung durch Eingabe von 1, 2, 3 oder 4: ")
betrag = float(input("Bitte geben Sie den € Betrag ein im Format zz.xx (z bis max. 5 stellen):"))
gebühr, gesamt_betrag = gebühr_berechnen(payment_choice, betrag)
if gebühr is not None:
save_transaction(payment_choice, betrag)
display_results(gebühr, gesamt_betrag)
else:
print("Ungültiger Zahlungstyp. Bitte geben Sie eine gültige Zahlungsoption ein (1, 2, 3 oder 4).")
elif menüwahl == "2":
retrieve_transactions()
elif menüwahl == "3":
transaction_id = input("Bitte gibt die ID der Berechnung ein, die du löschen möchtest. ")
delete_transaction(transaction_id)
elif menüwahl == "4":
print("Programm wird beendet.")
break
else:
print("Ungültige Eingabe")
# Funktion zur Ausgabe der Zahlungstyp-Optionen
def display_payment_options():
print("Zahlungstypen:")
print("1. Waren/Dienstleistungen")
print("2. Freunde")
print("3. Spenden sammeln")
print("4. Mikrozahlung")
# Funktion zur Ausgabe der Ergebnisse
def display_results(gebühr, gesamt_betrag):
if gebühr is not None:
print("PayPal-Gebühr:", gebühr, "€")
print("Betrag nach Abzug der Gebühr:", gesamt_betrag, "€")
else:
print("Ungültiger Zahlungstyp.")
# Funktion zur Speicherung der Berechnung in der Datenbank
def save_transaction(zahlungsart, betrag):
try:
# SQL-Befehl zum Speichern einer Berechnung
sql = "INSERT INTO transactions (zahlungsart, betrag) VALUES (%s, %s)"
val = (zahlungsart, betrag)
cursor.execute(sql, val)
connection.commit() # Änderungen in der Datenbank speichern
print("Berechnung erfolgreich gespeichert.")
except mysql.connector.Error as err:
print(f"Fehler beim Speichern der Berechnung: {err}")
# Funktion zur Abfrage der gespeicherten Berechnungen aus der Datenbank
def retrieve_transactions():
try:
# SQL-Befehl zum Abrufen aller Berechnungen
sql = "SELECT * FROM transactions"
cursor.execute(sql)
transactions = cursor.fetchall()
print("Gespeicherte Berechnungen:")
for transaction in transactions:
print("ID:", transaction[0])
print("Art der Zahlung:", transaction[1])
print("Betrag:", transaction[2])
print("--------------------------")
except mysql.connector.Error as err:
print(f"Fehler beim Abrufen der Berechnungen: {err}")
# Funktion zum löschen von gespeicherten Zahlungen
def delete_transaction(transaction_id):
try:
sql = "DELETE FROM transactions WHERE id = %s"
val = (transaction_id,)
cursor.execute(sql, val)
connection.commit()
print("Gespeicherte Berechnung wurde erfolgreich gelöscht.")
except mysql.connector.Error as err:
print(f"Fehler beim löschen der Berechnung: {err}")
if __name__ == "__main__":
main()