2016-12-23 4 views
0

Ich versuche, den Unterschied in den Ergebnissen dieser beiden Optionen zu verstehen und möglicherweise eine bessere Option zu erhalten. Ich bin ein Neuling, aber meine Anleitung ist nicht sehr detailliert und ich habe es schwer, Informationen über die Grammatik von Python zu bekommen - wenn jemand eine großartige Ressource hat, freue ich mich darüber. :)Oder Grammatik in Python

def numberchoice(): 
    print "How much do you take?" 
    choice = raw_input("> ") 
    if "0" in choice or "1" in choice or "2" in choice: #OPTION ONE 
    #if "0" or "1" or "2" in choice: #OPTION TWO 
     how_much = int(choice) 
    else: 
     print "please type a number." 
     numberchoice() 
    if how_much < 50: 
     exit("Nice, you're not greedy, you win!") 
    if how_much > 50: 
     exit("You greedy bastard!") 
numberchoice() 

Das, was ich nicht verstehe, ist, warum OPTION eins und zwei nicht austauschbar sind; Wenn ich Option 1 verwende und der Benutzer eine falsche Antwort eingibt - dh. Buchstaben statt Zahlen - Option 1 führt die "sonst" -Antwort, aber Option zwei gibt nur einen Fehler. Danke im Voraus!

Antwort

2
if "0" or "1" or "2" in choice 

Dies ist ein extrem häufiger Fehler für neue Programmierer.

Dies könnte

if '0' == true or '1' == true or '2' in choice 

Sehen Sie, was das Problem ist jetzt als

gelesen werden? "0", da es sich um eine nicht leere Zeichenkette handelt, ist wahr und wird immer wahr sein, so dass der Rest der Überprüfungen nie ausgeführt wird.

Denken Sie daran, or prüft nur, ob einer seiner Operanden wahr (oder truthy) ist. Es hat kein intelligentes Verhalten, das es erlaubt, Englisch zu lesen und zu funktionieren, wie Sie es erwarten würden.

Version 1 ist korrekt, obwohl Sie weiter unten lernen Sie bessere Möglichkeiten, das zu schreiben.

+0

Es scheint so einfach und sinnvoll, wenn ich Ihre Antwort lese. Vielen Dank! – Unabashedley