用户选择带参数的可选功能

时间:2018-03-23 10:02:16

标签: python function dictionary

借助Stackoverflow'用户我发现了如何使用optional functions编写程序。但问题仍然是另一种形式:

根据以下代码,用户可以选择用于计算的abc函数中的每一个,可能是其中之一或全部。但他们的参数怎么样? 如果我们想在所选函数中导入参数值?

例如,用户想要使用函数ac并导入不同的xyhs和{{ 1}}。这些参数完全不同,必须由用户导入。 dl将在代码中计算,而不是由用户计算。

n 我们的职能是:

Results=(a(x1,y1,h1,n)+c(s1,d1,l))-(a(x2,y2,h2,n)+c(s2,d2,l)))

原始代码是:

def a(x,y,h,n):
    return x + y    
def b(z,l):
    return z - t    
def c(s,d):
    return s*d

1 个答案:

答案 0 :(得分:1)

如果函数的参数是固定的,并且您之前知道它们,那么以下代码段可以帮助您。在python 3.6中试验和测试

dic_var = {"a": ["x","y","h"],"b": ["z"], "c":["s","d"] }

funcs = ["a","c"]
for i in funcs:
    vars_here = dic_var[i]
    for item in vars_here:
        exec("{} = int(input('Input values for:{}'))".format(item, item) )

编辑:1

# Let us define n and l 
n = 10
l = 5

dic_var = {"a": ["x","y","h"],"b": ["z"], "c":["s","d"] }
execute_fun = {"a": "a(x,y,h,n)", "b": "b(z,l)", "c": "c(s,d)"}

def a(x,y,h,n):
    return x + y    
def b(z,l):
    return z - l    
def c(s,d):
    return s*d

dic = {}
dic['a'] = a
dic['b'] = b
dic['c'] = c

funcs = str(input("which functions would you like to use?: "))
funcs = funcs.split(',')

result = 0

for i in funcs:
    vars_here = dic_var[i]
    for item in vars_here:
        exec("{} = int(input('Input values for:{}'))".format(item, item) )
    exec("val = {}".format(execute_fun[i]))
    result += val

print (result)