Python Wie kann das skript von vorne beginnen?


23.10.2020, 18:44

Warum geht das nicht?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Du könntest alles in eine while-Schleife packen, bei der du die Bedingung nur dann fehlschlagen lässt, wenn am Ende ein "n" eingegeben wird. Zum Beispiel:

nochmal_spielen = True
while nochmal_spielen:
  print("Bis zu welcher Zahl soll es gehen?")
  # [...]
  if nochmal == "n":
    nochmal_spielen = False

Vielleicht kriegst du die Bedingung auch eleganter hin, aber das wäre ein erster Ansatz ;)

Gamco 
Fragesteller
 23.10.2020, 18:31

Vielen Dank

0
Gamco 
Fragesteller
 23.10.2020, 18:35

Hat geklappt danke

0
MagicalGrill  23.10.2020, 18:36
@Gamco

Kein Problem. Mach dir aber auch Gedanken darüber, was da überhaupt passiert: Jetzt wird das Spiel auch dann weitergehen, wenn der Spieler irgendetwas anderes eingibt als "n", also auch bei "x" oder bei "Nein" oder bei "N"...

1
Gamco 
Fragesteller
 23.10.2020, 18:38
@MagicalGrill

Kann ich dann machen es wird so lange wieder holt bis j bzw. n kommt?

0
MagicalGrill  23.10.2020, 18:40
@Gamco

Klar kannst du ;) Du brauchst nur noch ne weitere Schleife an der richtigen Stelle.

1
Gamco 
Fragesteller
 23.10.2020, 18:45
@MagicalGrill

Könntest du mir bitte nochmal helfen warum geht das jetzt nicht?

Siehe Bild oben :

0
MagicalGrill  23.10.2020, 18:48
@Gamco

Da ist mehreres schief gegangen, aber das wichtigste: Du musst dich fragen: "Was soll eigentlich wiederholt werden?" Und alles, was wiederholt werden soll, muss in die Schleife mit rein.

Bei deinem Ansatz zum Beispiel beginnt die while-Schleife hinter der Eingabe. Das heißt, der Benutzer kann nur einmal seine Eingabe machen und wenn die Eingabe keinen Sinn ergibt, hat er halt Pech gehabt.

Aber eigentlich willst du doch, dass er immer wieder Dinge eingeben kann, bis er irgendwann "j" oder "n" eintippt. Das heißt, du musst die Schleife auch vor der Eingabe beginnen lassen.

1
Gamco 
Fragesteller
 23.10.2020, 19:10
@MagicalGrill

Es ist wirklich die letzte Frage aber was kann fürs Fragezeichen rein cih habe schon alles probiert mit not und listen aber das geht nicht könntest du mir weiter helfen Danke

Alles in der Schleife:

while check:
        print ("Nochmal?(Ja = j , Nein = n)")
        nochmal = str(input())  
        if nochmal == "n":
            nochmal_spielen = False
            check = False
        elif nochmal == "j":
            check=False
        elif nochmal == ? :
            check = True
0
MagicalGrill  23.10.2020, 19:17
@Gamco

Wenn du einfach "check = True" über die while-Schleife packst, kannst du dir das letzte elif sparen. Der Wert bleibt dann ja True, bis er irgendwann in einem Schleifendurchlauf geändert wird.

Führ das erstmal durch und versuche es zu verstehen. Wenn du das geschafft hast, habe ich noch einen fortgeschrittenen Tipp für dich:

Übrigens musst du nicht unbedingt eine eigene Variable in das while packen. Du kannst da auch Ausdrücke reinschreiben, die entweder wahr oder falsch sind:

nochmal = ""
while nochmal != "j" and nochmal != "n":
  print("Nochmal?(Ja = j, Nein = n)")
  nochmal = str(input())
if nochmal == "n":
  nochmal_spielen = False

Wenn du das nicht auf Anhieb verstehst, mach dir keine Sorgen und lerne erst einmal weiter die Grundlagen ;)

1
Gamco 
Fragesteller
 23.10.2020, 19:19
@MagicalGrill

Vielen vielen Dank für deine Antwort du hast mir extrem weiter geholfen Danke

Und jetzt wünsche ich dir einen schönen Abend noch :)

1
MagicalGrill  23.10.2020, 19:22
@Gamco

Danke gleichfalls, und viel Spaß noch beim Programmieren ;)

1

Also ich hab eigentlich so ziemlich keine Python Erfahrung, aber wenn ich in ein altes Script schaue, was ich mal gemacht habe, ist in einer While-Loop in einem If-Statement continue und break.

Also continue für while-loop wiederholen und break für abbrechen/abschließen

Korrigiert mich gerne, habe wie gesagt Python nie wirklich gelernt, nur mal bisschen "reingeschnuppert"

Gamco 
Fragesteller
 23.10.2020, 18:35

Hab ich gerade gemacht trotzdem Danke für deine Antwort

0
PhiBalo  28.10.2020, 19:10

Du musst das gesamte Script außer "import random" in eine While schleife packen. Also:

while True:
# hier steht der Code deines Spieles

nochmal = input("Nochmal spielen? >> ")
if nochmal.lower() != "j":
exit()

0

Könntest das ganze auch in eine Funktion packen und dann die Funktion immer wieder aufrufen