簡體   English   中英

基於python中的隨機數調用不同的函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM