我有11个不同的函数,名为func1,func2等,一直到func11。我在这些函数中存储了不同的值组合,我需要在区间[1,11]中绘制5个唯一的随机整数,以选择我将使用的5个函数。我用这种方式解决了这个问题:
possible_values = range(1,12)
selected_values = random.sample(possible_values,5)
现在问题:我需要根据random.sample选择的数字调用所选的5个函数,这些函数可能类似于:[3,6,7,4,9]
换句话说,我需要打电话:
func3()
func6()
func7()
func9()
调用顺序无关紧要,但我需要对生成的任何随机数进行此操作。
答案 0 :(得分:3)
<强> 1。溶液强> 您可以将所有11个函数保存到列表或字典中,并通过索引调用它,如下所示:
function_dict = {1:func1, 2:func2, 3:func3, 4:func4, 5:func5, 6:func6,
7:func7, 8:func8, 9:func9, 10:func10, 11:func11}
possible_values = range(1,12)
selected_values = random.sample(possible_values,5)
for key in selected_values:
function_dict[key]()
<强> 2。溶液强> 如果您还不需要随机数,您可以随机选择功能:
function_list = [func1, func2, func3, func4, func5, func6,
func7, func8, func9, func10, func11]
for func in random.sample(function_list, 5):
func()
答案 1 :(得分:0)
更快捷的方法是用户&#34; eval&#34;
possible_values = range(1,12)
selected_values = random.sample(possible_values,5)
for value in selected_values:
eval("func" + str(value))
否则你可以试试这个:
possible_values = range(1,12)
selected_values = random.sample(possible_values,5)
for value in selected_values:
all_methods = locals().copy()
method = all_methods.get("func" + str(value))
method()