2013-10-10 47 views
-3

为什么当我试图运行它时,'else'部分用红色标记?它说'无效的语法'。什么导致我的Python脚本中这个无效的语法错误?

def interseccion(lista, lista2, resultado=[]): 
if lista != []: 
    if lista[0] in lista2: 
     return interseccion(lista[1:], lista2, resultado+[lista[0]] 
    else:     
     return interseccion(lista[1:], lista2, resultado] 

return resultado 
+3

你的左括号 - '('没有右括号')'...也许还有其他问题。 – davecom

+4

[可变的默认参数可能会导致麻烦。](http://stackoverflow.com/questions/1132941/least-astonishment-in-python-the-mutable-default-argument) –

+1

另外:问题标题的想法是以对其他可能希望帮助或寻找对同一问题的答案的人有用的方式总结该问题。 “为什么我得到这个错误?我是一个noobie”不太可能。 – DSM

回答

2

特定的错误是因为缺少一个右括号:

return interseccion(lista[1:], lista2, resultado+[lista[0]]) <-- that parenthesis is needed 
+0

同样在第二次调用'interseccion()'(或者,我想我应该写'interseccion(') - 尽管有区别;那里有一个'''代替了''''''。 –

+0

非常感谢,我必须更加小心。 – user2833752

+0

@JonathanLeffler你是对的,但是具体询问关于'else'错误的问题。 – SheetJS

0

您必须关闭括号在这两个你回来的语句:

return interseccion(lista[1:], lista2, resultado+[lista[0]]) 

return interseccion(lista[1:], lista2, resultado) 

另外if lista != []:更简单地写成if lista:

而且我不太确定您是否希望resultado默认为空列表!也许默认值应为None,然后您可以指定:

if resultado is None: 
    resultado = [] 

开头。

相关问题