2017-05-16 7 views
0

a、b、およびcは、はるかに大きなコードの一部であるあらかじめ定義された関数です。 enemy_reponseは、関数の戻り値であるため コードは常にリストから関数をランダムに選択し、結果に条件を適用します。

a = enemy_hit 
b = enemy_def 
c = enemy_sphit 
d = [a,b,c] 
enemyresponse = random.choice(d)() 
#print(enemyresponse) 
if enemyresponse == b : 
    thing.health = thing.health - 0.25 
    #print(enemyresponse) 
elif enemyresponse != b : 
    #print(enemyresponse) 
    thing.health = thing.health - 1 

答えて

1

enemy_reponsebに等しくなることはありません*、選択肢iはそれぞれ唯一つが起こる印刷しようとしたenemy_def 場合でも、ELIFの一部を返します、関数そのものではありません。あなたがランダムにそれを選択した後、すぐに関数を呼び出す方法に注意してください:

random.choice(d)() 
#    ^Called it 

保存chosen_function(または類似したもの)という変数に選ばれた機能を、そのに対してチェック。

a = enemy_hit 
b = enemy_def 
c = enemy_sphit 
d = [a,b,c] 

# Randomly get function from list 
chosen_function = random.choice(d) 

# Call it to get the return value 
func_return = chosen_function() 
print(func_return) 

if chosen_function == b: 
    thing.health = thing.health - 0.25 

else: 
    thing.health = thing.health - 1 

*ない限りb戻っ自体、考えにくい:

はおそらく、この(未テスト)のようなものを意味しました。

+0

私は変数を関数に代入しなかった場合、if \ else文を呼び出すことができますか?これを行うことはできますか? –

+0

@HasanFaresはい、 'choice'の呼び出しの後に'() 'を入れてください。関数を呼び出すのはその括弧です。 – Carcigenicate

+0

私は試みましたが、それが返すのはすべて:function start。 .enemy_sphit at 0x005E84F8> –

関連する問題