忽略递归函数Python3.x的实例
如果你能给我一个线索的话,我还没有找到任何解决办法。。 我有这个功能:忽略递归函数Python3.x的实例,python,python-3.x,recursion,Python,Python 3.x,Recursion,如果你能给我一个线索的话,我还没有找到任何解决办法。。 我有这个功能: def analizar_consulta(consulta, v): print('\ntomar consulta: {}\n'.format(consulta)) #transformar todas las variables en su contenido consulta = transformar_variable(consulta, v) if consulta[0] in d
def analizar_consulta(consulta, v):
print('\ntomar consulta: {}\n'.format(consulta))
#transformar todas las variables en su contenido
consulta = transformar_variable(consulta, v)
if consulta[0] in diccionario_funciones.keys():
parametros = list(filter(lambda x: not(isinstance(x,list)), consulta[1:]))
consultas = list(filter( lambda x: isinstance(x,list) , consulta[1:]))
print('parametros: {}'.format(parametros))
print('consultas: {}\n'.format(consultas))
if len(consultas) > 0:
pasadas = list(map(lambda x: analizar_consulta(x, v), consultas))
parametros.append(pasadas)
else:
return diccionario_funciones[consulta[0]](*parametros)
return diccionario_funciones[consulta[0]](*parametros)
else:
raise Exception('Comando no encontrado')
由于它是递归的,有时它将第一个参数中的参数作为新实例中的新参数,但有时新参数的第一个参数是列表,这会在第5行引起错误(consulta[0]
)
如果有一个列表(只包含数字),它只返回它,而不是继续执行其余的代码,有没有办法?
对不起,代码是西班牙语的,如果你不懂,我可以编辑它
当我尝试使用[“compariar”、[“PROM”、“x”]、“>”、[“DESV”、“y”]]
此参数时,它会引发错误:TypeError:unhable type:“list”
从技术上讲,是的。在第4.5行添加:
c0 = consulta[0]
if isinstance(c0, list) and all(isinstance(i, int) for i in c0):
return
话虽如此,但您不知道参数列表包含什么,这表明代码中存在设计问题。您刚刚调用了一个函数来对列表进行某种转换:
consulta = transformar_variable(consulta, v)
你为什么不把它修好
考虑看一下整个代码,然后问一个不同的问题:“我该怎么做(不管它是什么)”请修正缩进。不要说“哪一行在第5行出现错误”,你应该说它产生了什么错误。理想情况下,对完整的错误进行回溯。