2016-04-03 8 views
0

Ich versuche, ein Spiel zu machen, um zu lernen, wie mit Python zu programmieren. Ich habe einen Teil erreicht, wo ich eine während Schleife wollen, um Eingabe zu fragen, wenn die Benutzereingabe nicht gültig ist. Ich möchte aber auch zwei verschiedene Eingänge für unterschiedliche Ausgänge. Ich habe es jedoch so codiert, dass keine Benutzereingaben gültig sind.Python: Wie 2 verschiedene Eingaben zu codieren

action4 = input() 
while action4 != ("left") or action4 != ("right"):       
    print ("Left or right?") 
    action4 = input() 
if action4 == ("left"): 
    print ("You turn left and proceed down this hallway") 
    left = True 
elif action4 == ("right"): 
    print ("You turn right and proceed down this hallway") 
    left = False 

Ich versuche, es zu bekommen, so dass beide left und right sind beide gültig Ausgänge. Aber behalten Sie die während Schleife, so dass, wenn eine andere Eingabe nicht gültig ist.

Antwort

1

lassen Sie uns die bedingte in der while-Schleife betrachten:

action4 != ("left") or action4 != ("right") 

wir müssen dies als falsch bewerten aus der while-Schleife zu brechen, so welche Werte würden dieses Falsch machen? Wir können die bedingte brechen wie folgt aus:

action4 = ... 
cond1 = action4 != ("left") 
cond2 = action4 != ("right") 
result = cond1 or cond2 
print(cond1,cond2,result) 

so was ist, wenn action4 = "left"? Nun, dann cond1 -> False aber cond2 -> True so, weil einer von ihnen True ist, ist cond1 or cond2 True.

Was ist, wenn action4 = "right"? Nun, dann cond1 -> True, aber cond2 -> False also, weil einer von ihnen True ist, ist cond1 or cond2 True.

Ich denke, was Sie ändern müssen die or-and ist, also wenn Action4 nicht entweder von links oder rechts, dann wird es brechen:

while action4 != ("left") and action4 != ("right"): 

oder können Sie den not in Operator verwenden:

while action4 not in ("left","right"): 

das ist ein bisschen einfacher zu verstehen.