/ / Wie erstellt man eine Eingabeaufforderung für eine Schleife mit Python 3.6 - Python-3.x, Schleifen, Entscheidungsbaum

Wie ti erstellen eine Entscheidung Aufforderung für eine Schleife mit Python 3.6 - Python-3.x, Schleifen, Entscheidungsbaum

Ich versuche, eine Entscheidungsaufforderung für eine Schleife mit Python 3.6 zu erstellen. Aber es funktioniert nicht

def cycle():
looping = "yes"
while looping == "No" or "no" or "n" or "N":
looping = input("Do you want to make a new calculation? n t (Y/N)")
if looping == "No" or "no" or "n" or "N":
looping = "yes"
break
elif looping != "No" or "no" or "n" or "N":
print("This is not the right answer")
looping="no"

Kann mir jemand mit diesem Code helfen? Vielen Dank!

Antworten:

1 für die Antwort № 1

Neben dem Vergleichsfehler, auf den Jean-François Fabre hingewiesen hat, gibt es auch hier einen logischen Fehler. Zur Vereinfachung ist dies der Code in Ihrem Beispiel:

looping = "yes"
while looping == "no":
(do stuff which might change looping to something else)

Das while Die Schleife beginnt nie. Sie sollten schreiben:

looping = "no"
while looping == "no":
(do stuff)

oder wie Jean-François sagte:

looping = "no"
while looping.lower() in ["no","n"]:
(do stuff)

Dann konvertieren Sie die Antwort "Nein" von jemandem zu "Ja" ...

Warum versuchen Sie nicht, immer auf dem Laufenden zu bleiben, wenn der Benutzer keine gültigen Eingaben macht:

def cycle():
newcalc = "no"
while True:
newcalc = input("Do you want to make a new calculation? n t (Y/N)")
if newcalc.lower() in ["no","n"]:
newcalc = "no"
break
if newcalc.lower() in ["yes","y"]:
newcalc = "yes"
break
print("This is not the right answer")

1 für die Antwort № 2

Sie können Strings nicht so vergleichen:

while looping == "No" or "no" or "n" or "N": # wrong

Grundsätzlich das Nachlaufende or Aussagen prüfen nur, ob "no" ist nicht leer usw .. sie sind nutzlos.

  • Ob looping=="No", Du wirst kriegen True: Schleife geht weiter
  • Ob looping!="No"erhalten Sie das nächste "Nicht-Falsch": "no": Schleife geht weiter

richtige Methode: Konvertierung in Kleinbuchstaben und Test, ob die Zeichenfolge zu einer Liste gehört:

while looping.lower() in ["no","n"]: