Abbrechen und zurück- funktion

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Wired1.0.
User
Beiträge: 31
Registriert: Montag 23. Januar 2023, 20:25

Hallo, ich lerne seit einer Woche Python und programmiere gerade übungsweise eine ATM- Software.
Ich habe einen URL zu einem Bild vom Anfang des Codes unten eingefügt.
Ich würde gern bei jeder der 5 Optionen noch eine zusätzliche "geh zurück" - option mit einbauen.
Also wie "Wenn du Abbrechen, und zurück zum Menu kommen willst dann drücke x)
Kann mir da jmd weiterhelfen?
https://mega.nz/file/6UtmRLqI#D-T-Rp3Nr ... 8muT67ETKo
Sirius3
User
Beiträge: 18275
Registriert: Sonntag 21. Oktober 2012, 17:20

Oh mal wieder eine ganz wörtlicher Screenshot. Statt hier Photos Deines Bildschirms zu posten, bitte post den Code als Text direkt in Deiner Frage in code-Tags. Dann kann man den Code einfach lesen und kopieren und ausprobieren.
imonbln
User
Beiträge: 191
Registriert: Freitag 3. Dezember 2021, 17:07

Klingt nach einer Implementierung des Command-pattern, hier sind zwei Videos dazu, welche dir vielleicht helfen.

https://www.youtube.com/watch?v=FM71_a3txTo&t
https://www.youtube.com/watch?v=rGu33Tk0tCM&t

Und wie @Sirius3 schon geschrieben hat, ein Screenshot ist keine Lösung, hierfür gibt es die Code-tags.
Wired1.0.
User
Beiträge: 31
Registriert: Montag 23. Januar 2023, 20:25

Hallo, ich lerne seit einer Woche Python und programmiere gerade übungsweise eine ATM- Software.
Ich habe den Code unten eingefügt.
Ich würde gern bei jeder Option noch eine zurück funktion mit einbauen. Bei der ersten Weile schleife habe ich das schon ganz gut geschafft (einfach eine While schleife um alles gepackt aber bei option 3 -> option 4 klappt das irgendwie nicht...)
Kann mir da jemand helfen?

Code: Alles auswählen

print("Welcome to the ATM of XYZ Bank")

Balance =10000
password=1234
pin=int(input("Please type in Your 4 digit Pin: \n"))
name2 =0
choice=0
choice2 = 4
choice3=0
while choice2 !=2:
    while choice3 != 2:
        if pin == password:
            while choice != 5:

                print(" *** MENU ***")
                print("1 == Check Balance")
                print("2 == Deposit")
                print("3 == Send Money")
                print("4 == Withdraw")
                print("5 == close\n")

                choice = int(input("Enter your option:\n"))

                if int(choice) == 1:
                    print("Your Balance is: ", Balance, "€")
                if int(choice) == 2:
                    deposit = int(input("How Much do you want to deposit?"))
                    print("Please put the Money in the opening")
                    Balance = int(Balance + deposit)
                    print("Success! Your Balance is now ", Balance, "€!")


                elif int(choice) == 3:
                    while name2 != 4:

                        print("*** YOUR CONTACTS ***")
                        print("1 == Anton")
                        print("2 == Lea")
                        print("3 == Bernd")
                        print("4 == cancel")

                        name = int(input("Where do you want to send money to?\n"))
                        if int(name) == 1:
                            send = int(input("How much Money do you want to send to Anton"))
                            again = int(input("Please enter again your 4 Digit pin"))
                            if int(again) == int(password):
                                Balance = int(Balance - send)
                                print("Success! You have transfered" + str(send) + "€ to Anton! \nYour current Balance =", Balance, "€!")
                            else:
                                print("Cant transfer! Your Pin is incorrect! Please try again.")

                        elif int(name) == 2:
                            send = int(input("How much Money do you want to send to Lea"))
                            again = int(input("Please enter again your 4 Digit pin"))
                            if int(again) == int(password):
                                Balance = int(Balance - send)
                                print("Success! You have transfered" + str(send) + "€ to Lea! \n Your current Balance =",Balance, "€!")
                            else:
                                print("Cant transfer! Your Pin is incorrect! Please try again.")

                        elif int(name) == 3:
                            send = int(input("How much Money do you want to send to Bernd"))
                            again = int(input("Please enter again your 4 Digit pin"))
                            if int(again) == int(password):
                                Balance = int(Balance - send)
                                print("Success! You have transfered" + str(send) + "€ to Bernd! \n Your current Balance =",Balance,"€!")
                            else:
                                print("Cant transfer! Your Pin is incorrect! Please try again.")
                        elif int(name) == 4:
                            print("canceled")
                        else:
                            print("Dont understand! Please try again.")

















                elif int(choice) == 4:
                    withdraw = int(input("How much money the ATM has to give You?"))
                    pin2 = int(
                        input("Are you sure you want to withdraw" + str(
                            withdraw) + "€? Please confirm with your pin: \n"))
                    if int(pin2) == 1234:
                        print("Success! Your Current Balance is now:", str(Balance - withdraw), "€!")
                        Balance = int(Balance - withdraw)
                    else:
                        print("Thats not the right pin! Please try again!")

            else:
                print("Welcome to the ATM of XYZ Bank")
                pin = int(input("Please type in Your 4 digit Pin: \n"))


        else:
            print("Ups, thats The wrong pin! Please try again")
            pin = int(input("Please type in Your 4 digit Pin: \n"))
Wired1.0.
User
Beiträge: 31
Registriert: Montag 23. Januar 2023, 20:25

Sirius3 hat geschrieben: Montag 23. Januar 2023, 21:05 Oh mal wieder eine ganz wörtlicher Screenshot. Statt hier Photos Deines Bildschirms zu posten, bitte post den Code als Text direkt in Deiner Frage in code-Tags. Dann kann man den Code einfach lesen und kopieren und ausprobieren.
Habe den Code unten angehangen.
Wired1.0.
User
Beiträge: 31
Registriert: Montag 23. Januar 2023, 20:25

imonbln hat geschrieben: Dienstag 24. Januar 2023, 00:11 Klingt nach einer Implementierung des Command-pattern, hier sind zwei Videos dazu, welche dir vielleicht helfen.

https://www.youtube.com/watch?v=FM71_a3txTo&t
https://www.youtube.com/watch?v=rGu33Tk0tCM&t

Und wie @Sirius3 schon geschrieben hat, ein Screenshot ist keine Lösung, hierfür gibt es die Code-tags.
Alles klar schau ich mir mal an. Danke. Den Code habe ich unten angehangen.
Benutzeravatar
__blackjack__
User
Beiträge: 14067
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Wired1.0.: Das ist viel zu viel Code am Stück und zu tief verschachtelt. Das sollte sinnvoll auf Funktionen aufgeteilt werden, dann ist das auch übersichtlicher und leichter zu handhaben/durchschauen. Zum Beispiel sieht man jetzt nicht sofort das ein ``else`` zu einer ``while``-Schleife ohne ``break`` existiert was ziemlich sicher falsch ist.

Auch das Hauptrogramm sollte in einer Funktion stecken, weil man auf Modulebene nur Konstanten, Funktionen, und Klassen definiert, um globale Variablen zu vermeiden.

Da wird auch einiges an Code/Text mehrfach wiederholt, was man so nicht macht.

`int()` wird unnötigerweise an mehreren Stellen auf Werte angewendet die bereits Zahlen sind. Wobei eine Pin keine Zahl ist und der Code der das als Zahl behandelt führende 0en ignoriert und somit 0 == 00 == 000 == 0000 gelten würde, was aber nicht stimmt. Bei einer Pin sind auch führende 0en wichtig.

Man nummeriert keine Namen und man belegt auch keine Namen am Anfang mit irgendwelchen Werten vor, sondern definiert die erst wenn man sie tatsächlich braucht. Da Python keine nachprüfenden Schleifen hat, verwendet man dafür in der Regel ”Endlosschleifen” (``while True:``) und bricht die an der entsprechenden Stelle mit ``break`` ab, statt eine Variable mit einem Dummy-Wert zu belegen, damit der in der ``while``-Bedingung schon zur Verfügung steht obwohl der eigentlich erst *in* der Schleife mit einem Wert versehen wird.

Zeichenketten und Werte mit ``+`` und `str()` zusammenstückeln ist eher BASIC als Python. In Python gibt es dafür Zeichenkettenformatierung mit der `format()`-Methode und f-Zeichenkettenliterale.

Namen werden in Python klein_mit_unterstrichen geschrieben. Ausnahmen sind Konstanten (KOMPLETT_GROSS) und Klassennamen (PascalCase). Also `balance` statt `Balance`.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten