2017-06-04 5 views
-7

Ich mache Code, wo, wenn diese Bedingungen erfüllt sind, Ziel sollte inkrementiert werden, aber es ist nicht, wenn es sein soll. Irgendwelche Ideen warum?Was ist los mit meinem und/oder in Python?

+2

Fügen Sie Klammern hinzu (und korrigieren Sie die Einrückung), um anzugeben, in welcher Reihenfolge sie ausgeführt werden sollen. – jambrothers

+1

Können Sie den korrekt formatierten Code mit Beispieleingaben und entsprechenden erwarteten Ausgaben anzeigen? – thefourtheye

+0

@jambrothers Was sollte ich Klammern hinzufügen? – mdot

Antwort

-2

Afaik, wird die == vor dem geprüft und, so dass Sie ein == B und A == C

+2

Das ist völlig unklar. Was sind A, B und C? Und denkst du, sie könnten denken, dass "und" vor "==" bewertet wird? –

+0

OP hatte ursprünglich 3 Variablen in seinem Quellcode, also nannte ich sie A, B und C ... –

1

überprüfen müssen, wenn verschiedene logische Operatoren Chaining, es hilft Klammern hinzuzufügen, da dies deutlich macht, in welche Reihenfolge du eingibst.

if ((engineering == target) and (education == target)) or ((engineering == target) and (arts == target)): 
    target += 1 

Je nachdem, wie Sie die Klammern anordnen, führt dies zu unterschiedlichen Ergebnissen.

Dies ist nur ein Beispiel, um die richtige Reihenfolge zu kennen, müssen Sie zuerst klar sein, was die Logik ist.

+1

Guter Rat. In diesem Fall schreiben die Preton-Präzedenzregeln jedoch bereits vor, dass die Operationen für den OP-Code in der gleichen Reihenfolge ausgeführt werden wie Ihre vollständig geklammerte Version. Das wird das Ergebnis, das sie bekommen, nicht ändern. –

+0

@ PM2Ring ja, ich habe es aktualisiert, um darauf hinzuweisen, es ist nur ein Beispiel. Keiner von uns kann erraten, was OP Logik ist, leider! – jambrothers