【发布时间】:2017-04-30 04:03:42
【问题描述】:
我正在尝试构建一个操作函数(练习)的程序 - 显示有关要激活的当前函数的消息,获取激活函数所需的必要参数的输入,具体取决于参数的类型和数量,并激活它。
尝试运行它时,出现以下异常: ValueError:要解压的值太多(预计 3 个)
代码:
s = ['Q4', 'Q5a', 'Q5b', 'Q5c', 'Q5d', 'Q6']
f = [Trapez_rule, myFilter, myFilterMulti, myPrime, isFib, repeated]
inp = [['function', 'boundry a', 'boundry b', 'parts'], ['list', 'function'], ['list', 'list of functions'], ['number'], ['number'], ['function', 'number']]
reqtype = [['f', 'n', 'n', 'n'], ['l', 'f'], ['l', 'lf'], ['n'], ['n'], ['f', 'n']]
for j, k, l in f, inp, reqtype: # for i, j, k, l in s, f, inp, reqtype:
# print(i)
print(j.__doc__)
lst = []
for w, r in k, l:
print(w)
if r == 'f':
x = input()
x = 'lambda x: '
exec(x)
lst.append(x) # 'x'
elif r == 'n':
x = input()
lst.append(x)
elif r == 'l':
m = []
x = 0
while x != -1:
x = input()
m.append(x)
lst.append(m)
elif r == 'lf':
m = []
x = 0
while x != -1:
x = input()
x = 'lambda x: '
exec(x)
m.append(x)
lst.append(m)
execfunc = 'j('
for q in range(len(lst) - 1):
execfunc += lst[q] + ', '
execfunc += lst[q] + ')'
exec(execfunc)
我不明白如何修复代码,但我认为原因是使用嵌套列表作为循环的索引。
【问题讨论】:
-
我不知道你认为
x = input(); x = 'lambda x: '; exec(x)会做什么。 -
你能发布堆栈跟踪吗?这段代码有用过吗?
-
你认为
for j, k, l in f, inp, reqtype:是做什么的?我不认为它会那样做。 -
@DanielRoseman 我很确定他正在尝试将用户输入转换为匿名函数并执行它,但这不是它的作用。
标签: python debugging exception