Etwas erneut ausführen oder zurückspringen

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
bords0
User
Beiträge: 234
Registriert: Mittwoch 4. Juli 2007, 20:40

noisefloor hat geschrieben: Mittwoch 31. März 2021, 09:44 was daran IMHO auch ziemlich schräg / verwirrend ist, ist das `print` zwar in den Annotations auftaucht, aber der Name `print` immer noch an die Funktion gebunden ist und nicht an den String:
Warum empfindest du das als schräg / verwirrend? Namen werden doch nie an die annotation gebunden, oder stehe ich auf dem Schlauch?
Fritzbox
User
Beiträge: 2
Registriert: Samstag 10. April 2021, 21:36

Hallo ich hätte eine frage, ich möchte ein spiel entwickeln indem man sich immer für eine von 2 Möglichkeit entscheiden muss. Hier mein Problem, wenn man etwas anderes in "input" eingibt außer 1 und 2 möchte ich das eine Fehlermeldung erscheint und der Code wieder dorthin zurückspringt wo die Entscheidung abgefragt wird. Auch gerne andere Verbesserungsvorschläge in die Antwort Sektion ich lerne erst seit ein Paar Tagen Python und würde mich über Feedback freuen.
MFG Fritz.
Hier mein Code:

Code: Alles auswählen

from time import sleep
def entscheidung_1_wahl_10000_rechts():
    print("du läufst nach rechts")

def entscheidung_1_wahl_20000_():
    print("du läufst nach links")



name=input ("gib deinen namen:")
print ("hallo " +name+ " deine legende wird generiert...")
sleep (1)
print ("los geht's ")
print ("Du hast einen Auftrag..... ")
sleep (2)
print ("finde den Diamanten des Königs")
input ("[press to play]")
print (".......")
sleep (2)
print ("du kommst zu einer Wegkreuzung willst du(1)rechts oder (2)links gehen" )

zahl=input ("deine wahl.....")
if int(zahl) >=3:      #entscheidung 1 wahl 30000 [falsch]
    print("[falsche aussage]") # hier wird zwar schon ausgegeben falsche aussage aber das programm läuft nicht weiter

if int(zahl)< 2:#entscheidung 1 wahl 10000 [rechts]
    entscheidung_1_wahl_10000_rechts()

if int(zahl)== 2:               #entscheidung 1 wahl 20000 [links]
    entscheidung_1_wahl_20000_()
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

Das was Du brauchst, nennt sich Schleife, hier eine while-True-Schleife. Zusätzlich solltest Du noch abfangen, ob Du überhaupt eine Zahl eingegeben hast.

Code: Alles auswählen

from time import sleep

def auswahl(prompt, optionen):
    while True:
        try:
            zahl = int(input("deine wahl....."))
        except ValueError:
            pass
        else:
            if zahl in optionen:
                return zahl
        print("[falsche aussage]")

def entscheidung_1_wahl_10000_rechts():
    print("du läufst nach rechts")

def entscheidung_1_wahl_20000_links():
    print("du läufst nach links")

def main():
    name = input("gib deinen namen:")
    print(f"Hallo {name}, deine legende wird generiert...")
    sleep(1)
    print("los geht's ")
    print("Du hast einen Auftrag..... ")
    sleep(2)
    print("finde den Diamanten des Königs")
    sleep(2)
    print("du kommst zu einer Wegkreuzung willst du(1)rechts oder (2)links gehen" )

    zahl = auswahl("deine wahl.....", [1, 2])
    if zahl == 1:
        entscheidung_1_wahl_10000_rechts()
    else:
        entscheidung_1_wahl_20000_links()

if __name__ == '__main__':
    main()
Fritzbox
User
Beiträge: 2
Registriert: Samstag 10. April 2021, 21:36

Dankeschön jz funktioniert es gibt es dazu irgendwo ein Tutorial auf YT das ich den Ablauf dahinter vll. noch nachvollziehen kann.
Noch einmal danke saß wirklich lange an dem Problem.
LG
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Antworten