/ / Verwenden mehrerer Bedingungen mit der While - Schleife in Python - Python

Verwenden mehrerer Bedingungen mit der while - Schleife in Python - Python

Ich bin ziemlich neu in Python und habe angefangen zu macheneinige lustige kleine Spiele, um sich daran zu erinnern, wie es funktioniert. Ich bin auf einen Bereich gestoßen, in dem ich mehr als eine Bedingung in einer While-Schleife verwenden möchte und kann nicht herausfinden, wie das geht. Ich habe hier einige Leute gesehen, die Zahlen machen, aber ich benutze Buchstaben und nichts Ich suche oder suche nach scheint zu funktionieren. Das habe ich bisher erreicht. Die Idee ist, dass die Person A oder B wählt (in Klein- oder Großbuchstaben) und wenn sie es nicht tun, dass sie wieder zur Eingabe zurückkehrt.

ANS = input("tA/B: ")
if ANS == "A":
print("They beat you up and stole all of your stuff. You should have run away.")
del BAG[:]
print("You now have", len(BAG), "items in your bag.")
elif ANS == "a":
print("They beat you up and stole all of your stuff. You should have run away.")
del BAG[:]
print("You now have", len(BAG), "items in your bag.")
elif ANS == "B":
print("You got away but they stole something from you.")
ran_item = random.choice(BAG)
BAG.remove(ran_item)
print("You now have", len(BAG), "items in your bag")
print("They are:", BAG)
elif ANS == "b":
print("You got away but they stole something from you.")
ran_item = random.choice(BAG)
BAG.remove(ran_item)
print("You now have", len(BAG), "items in your bag")
print("They are:", BAG)
while ANS != "A" or "a" or "B" or "b":
print("You must make a choice...")
ANS = input("tA/B: ")

Jede Hilfe wäre großartig. Danke im Voraus.

Antworten:

3 für die Antwort № 1
while ANS not in ["A", "a", "B", "b"]:
print...

oder allgemeiner

while ANS != "A" and ANS != "a" and ...

2 für die Antwort № 2

Die Bedingung Ihrer while-Schleife wird von Python folgendermaßen interpretiert:

while (ANS != "A") or ("a") or ("B") or ("b"):

Darüber hinaus wird es immer zu bewerten True weil nicht leere Zeichenfolgen immer ausgewertet werden True.


Um das Problem zu beheben, können Sie verwenden not in stattdessen:

while ANS not in ("A", "a", "B", "b"):

not in wird testen, ob ANS kann im Tupel gefunden werden ("A", "a", "B", "b").


Vielleicht möchten Sie auch verwenden str.lower hier, um die Länge des Tupels zu verkürzen:

while ANS.lower() not in ("a", "b"):

0 für die Antwort № 3

Der einfachste Weg, um es in diesem Fall zu tun, wäre:

while ANS[0].lower() not in "ab":
....