我正在尝试编写一个可以随机移动的程序,它具有许多功能,该程序像使用关键字一样选择使用该功能,但是我的代码对于一些简单的事情变得很大,有一种更简单的方法写这段代码?
list_mov = ["R", "RI", "L", "LI", "U", "UI", "D", "DI", "F", "FI", "B", "BI"]
mov = random.choice(list_mov)
# Here i need to make a list of selected functions
resolution.append(mov)
if mov == "R":
mov_r()
if mov == "RI":
mov_ri()
if mov == "L":
mov_l()
if mov == "LI":
mov_li()
if mov == "U":
mov_u()
if mov == "UI":
mov_ui()
if mov == "D":
mov_d()
if mov == "DI":
mov_di()
if mov == "F":
mov_f()
if mov == "FI":
mov_fi()
if mov == "B":
mov_b()
if mov == "BI":
mov_bi()
答案 0 :(得分:2)
一切都是python中的对象。包含的功能。所以我可以这样写:
list_mov = {
"R": mov_r,
"RI": mov_ri,
"L": mov_i,
... # fill in more here
}
mov = random.choice(list(list_mov.keys()))
# Here i need to make a list of selected functions
resolution.append(mov)
# get function, then execute it
func = list_mov[mov]
func()
答案 1 :(得分:0)
您可以只创建一个函数列表,然后从它们中选择一个变量(就像对字符串一样)。它们都有相同的参数,因此应该很容易:
list_mov = [mov_r, mov_ri, ...]
mov = random.choice(list_mov)
resolution.append(mov)
# And finally
mov()
答案 2 :(得分:0)
在python中,一切都是对象。您可以简单地执行以下操作:list_mov = [mov_r, mov_l, ...]
因此,您可以使用:
mov = random.choice(list_mov)
mov()
答案 3 :(得分:0)
您实际上可以从函数实例列表中进行选择,然后调用您随机选择的函数实例,例如:
import numpy as np
def x():
print("function x!")
def y():
print("y here.")
def z():
print("zzz")
av_functions=[x,y,z]
mv=np.random.choice(av_functions)
mv()