[英]Call a different function based on a random number in python
我有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()
調用順序無關緊要,但我需要對生成的任何隨機數進行此操作。
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()
更快的方法是用戶“eval”
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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.