Wenn Turn
ist gleich 1 die erste if
Bedingung wahr sein wird, so wird Turn
auf 0 gesetzt bekommen, aber dann geht die Ausführung auf den zweiten if
Bedingung, die jetzt ist True
, so Turn
wird auf 1 zurückgesetzt werden.
Die sinnvolle Art und Weise, damit umzugehen ist zu verwenden elif
, wie andere erwähnt haben. Alternativ können Sie die print
in beide Zweige duplizieren und eine frühe return
in der ersten Zweigstelle setzen. Die elif
Ansatz ist besser, weil es die Code-Duplizierung vermeidet, und es ist auch ein guter Stil zu früh zu vermeiden return
s, wenn Sie können. Aber ich werde Sie den Code zeigen trotzdem:
def SomeFunction():
global Turn
if Turn == 1:
#some code
Turn = 0
print Turn
return
if Turn == 0:
#some code
Turn = 1
print Turn
Turn = 1
for i in range(10):
SomeFunction()
Ausgang
0
1
0
1
0
1
0
1
0
1
BTW, ist die übliche Python Konvention niedriger Fall für einfache Variable und Funktionsnamen zu verwenden. Groß- und CamelCase-Namen werden für Klassennamen verwendet. Natürlich haben Sie nicht haben, diese Konvention zu folgen, aber wenn Sie nicht machen es Ihren Code seltsam aussehen, wenn mit den meisten Syntax-Highlighting-Software gesehen, so dass es unnötig für den Rest der Python-Community verwirrend ist.
Weitere Informationen finden Sie unter PEP 0008 -- Style Guide for Python Code.
Eigentlich kann man einen Wert zwischen Null und Eins abwechselnd eine if
Anweisung ohne Verwendung. Der Trick ist, den Exklusiv-ODER-Operator zu verwenden, ^
:
def SomeFunction():
global Turn
Turn ^= 1
print Turn
Turn = 1
for i in range(10):
SomeFunction()
Das nach wie vor in der gleichen Ausgabe führt.
Wenn eine Variable nur jemals nimmt auf den Werten Null und Eins Sie bei einem boolean statt machen in Betracht ziehen sollten, und haben sie wechseln zwischen False
und True
, so dass mehr lesbaren Code führen kann. Sie können es abwechselnd mit:
Turn = not Turn
und Sie können einen Booleschen Wert in arithmetischen Ausdrücken verwenden, wo es gerade wie 0 oder 1 verhalten, auch wenn einige Leute das tun nicht mögen, und halten es weniger lesbar.
Ich glaube, ich sollte auch erwähnen, dass Sie versuchen sollten, mit global
zu vermeiden. Es kann praktisch sein, aber die Verwendung modifizierbarer Globals bricht die Modularität des Codes. Es ist keine große Sache für kleine Skripte, aber Sie werden das modulare Design wirklich schätzen, wenn Sie große komplexe Programme schreiben.
Gehen Sie die Ausführung mit Stift und Papier durch. Ja, das Ergebnis wird immer "1" sein. Vielleicht möchtest du ein *** 'elif' *** zum zweiten Mal benutzen. – deceze