2016-12-07 6 views
0

forループを実行して、それぞれに対してrandom.choice( "black"または "red")の値を出力します。繰り返し。それが正常に動作します、しかし、もし条件にrandom.choiceを割り当てると、動作していないよう:Python random.choice()if-functionをループに使用する方法 - 各繰り返しに値を割り当てる方法

import random 

def randomcolour(): 
    foo = ['black', 'red'] 

    for i in range(10): 
     random.choice(foo) 
     print(i, random.choice(foo)) 
     if random.choice(foo) == "black": 
      print(i, "black") 
     else: 
      print(i, "red") 

randomcolour() 

ここでは何が起こる「random.choice(FOO)」の最初の実行がランダムに「黒」を選択したということですか"赤"。しかし、if関数の "random.choice(foo)"は、明らかに以前に選択した同じランダム値を使用する代わりに、別のランダム値を選択します。例えば

、最初の印刷if文...

print(i, random.choice(foo)) 

...、 "黒"(同じループ反復で)その後文を出力...

if random.choice(foo) == "black": 
      print(i, "black") 

...「黒」も印刷する必要があります。しかし、それは無関係にランダムに "黒"または "赤"を印刷するようです。どうすれば修正できますか?言い換えれば、最初の選択されたランダム値を完全ループ反復に使用するにはどうすればよいですか?

ありがとうございました!

答えて

0

これは、割り当てステートメントの機能です。最初の呼び出しをrandom.choiceに代入して変数に代入し、その変数を現在の反復で再利用するだけです。

for i in range(10): 
    rand = random.choice(foo) 
    print(i, rand) 
    if rand == "black": 
     ... 
+0

うまく動作します!それに感謝します。前にその変数を試しましたが、random.choice(foo)を呼び出した後に変数を代入するのは間違いでした。 – pythonbrutus

0

この問題は、random.choiceの最初の呼び出しを変数に割り当ててから、その変数を参照することで解決できます。だからこのような何かがうまくいくはずです:

import random 

def randomcolour(): 
    foo = ['black', 'red'] 
    for i in range(10): 
     mychoice = random.choice(foo) 
     print(i, mychoice) 
     if mychoice == "black": 
      print(i, "black") 
     else: 
      print(i, "red") 

randomcolour() 
関連する問題