2017-01-31 3 views
0

So sagen, in einer while-Schleife ...meinen Kopf Mühe Umwickeln des „! =“ Operator und mit „und“ & „oder“ keywords

var = input() 
while var =! "A" and var =! "B": 
    var = input() 

Hier habe ich es, bis der Benutzer eine Schleife wollen Eingänge entweder A oder B. Jetzt logisch ist es sinnvoller, "oder" anstelle von "und" zu verwenden. Aber "und" scheint zu funktionieren. Ich versuche, mich darum zu kümmern, warum. Ich möchte diese Logik Schritt für Schritt für "und" und "oder" Keywords bekommen.

So sagen die Benutzereingaben "C". Die while-Schleife prüft, ob var nicht gleich A ist, was wahr ist, und überprüfe dann, ob var nicht gleich B ist, was auch wahr ist. Wäre das nicht die Schleife?

Jetzt mit "oder" statt, es wird überprüft, ob var nicht A ist und dann prüfen, ob var nicht B ist, wenn es beide Anforderungen erfüllt, wird es die Schleife ausführen. Wäre nicht "oder" der, der funktionieren sollte?

+1

Überlegen Sie, was passiert, wenn man 'var gesetzt =‚A'' ... – jonrsharpe

+1

'während var nicht in ("A", "B")' – dawg

+0

Warum 'or' _make mehr sense_ über' und'? – Arman

Antwort

0

Zuerst haben Sie sicherlich != gemeint, nicht =!. Zweitens lesen Sie die Gesetze von de Morgan (https://en.wikipedia.org/wiki/De_Morgan 's_laws).

Was Ihr Beispiel betrifft, lassen Sie uns überlegen, was passiert, wenn var == 'A'. Von dort haben wir Ihre Schleife Bedingung, die besagt, dass var != 'A' and var != 'B'. Von dort haben wir 'A' != 'A' and 'A' != 'B'. Folglich haben wir False and True, die False gibt und die Schleife nicht ausgeführt wird.

Wenn wir or statt and haben, würden wir bekommen: False or True, die Schleife würde True und das Programm gibt.

Die Negationen könnten Sie verwirrt haben. Per de Morgans Gesetze var != 'A' and var != 'B' entspricht !(var == 'A' or var == 'B')

0

Was Sie gesagt haben, ist ture. Wenn Sie einen Wert C eingeben, der von A und B abhängt, wird die Schleife ausgeführt. Wenn Sie die Schleife ausführen möchten, wenn entweder A oder B die Eingabe ist, sollten Sie oder verwenden.