を使用してみてください現在はTrue
ですので、Turn
は1にリセットされます。
これを処理するには分かりやすい方法です他の人が触れたようにelif
を使用してください。あるいは、print
を両方のブランチに複製し、最初のブランチにreturn
の早い方を置くこともできます。 elif
アプローチは、コードの重複を避けるために優れています。可能であれば、早めにreturn
を回避するのも良いスタイルです。しかし、私はとにかくあなたのコードを紹介します:
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()
出力
0
1
0
1
0
1
0
1
0
1
ところで、通常のPythonの慣習は、単純な変数と関数名の下ケースを使用することです。クラス名には、CapitalizedとCamelCaseの名前が使用されます。もちろん、にはこの規則に従うのにがありませんが、ほとんどの構文ハイライトソフトウェアで見たときにコードが奇妙に見えるので、Pythonコミュニティの残りの部分を不必要に混乱させます。
詳細はPEP 0008 -- Style Guide for Python Codeを参照してください。
実は、あなたはif
ステートメントを使用せずに、0と1の間の値を交互にすることができます。トリックは、排他的論理和演算子を使用する^
です:
def SomeFunction():
global Turn
Turn ^= 1
print Turn
Turn = 1
for i in range(10):
SomeFunction()
これは、前と同じ出力になります。
変数はこれまでは値をとる場合はゼロ、それがより読みやすいコードにつながることができて、あなたが、代わりにブールで行うことを検討し、それをFalse
とTrue
間の代替を持っている必要があります1。あなたはでそれを交互にすることができます
Turn = not Turn
とあなたはそれが何人かの人々がいることをやって好きではないが、ちょうど0または1のように振る舞い、そしてそれ少ない検討する算術式でのブール値を、使用することができます読める。
私はまた、あなたがglobal
を利用するのは避けるべきことを言及すべきであると思います。それは便利ですが、変更可能なグローバルを使用すると、コードのモジュール性が損なわれます。小さなスクリプトではそれほど大したことではありませんが、複雑なプログラムを書くときには、モジュラー設計に本当に感謝しています。
ペンとペーパーで実行します。はい、結果は常に「1」になります。おそらく、あなたは*** elifを***使いたいと思うかもしれません。 – deceze