借助Stackoverflow'用户我发现了如何使用optional functions编写程序。但问题仍然是另一种形式:
根据以下代码,用户可以选择用于计算的a
,b
,c
函数中的每一个,可能是其中之一或全部。但他们的参数怎么样?
如果我们想在所选函数中导入参数值?
例如,用户想要使用函数a
和c
并导入不同的x
,y
,h
,s
和{{ 1}}。这些参数完全不同,必须由用户导入。 d
和l
将在代码中计算,而不是由用户计算。
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
答案 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)