从列表中随机选择一个函数,然后将条件应用于结果

时间:2017-05-16 16:36:31

标签: python-3.x function if-statement random choice

a,b和c是预定义函数,它们是更大代码的一部分。 即使选择是enemy_def,代码总是返回elif部分 我试过打印每一个但没有任何事情发生

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 个答案:

答案 0 :(得分:1)

enemy_reponse永远不会等于b *,因为enemy_reponse是函数的返回值,而不是函数本身。请注意如何在随机选择后立即调用该函数:

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返回,否则这似乎不太可能。