学习Python else语法错误

时间:2012-06-07 00:01:48

标签: python syntax if-statement python-2.7

您好我正在MIT 6.00 Intro to Computer Science通过练习Open课程的练习问题来学习python。

我正在尝试做练习问题1第2部分创建一个递归函数来计算目标中键的实例。我的代码到目前为止......

from string import *
def countSubStringMatchRecursive (target, key,x,s):
   if (find(target,key)==find(target,key,s)) and (find(target,key)==find(target,key,(find(target,key)))):#if first and last
      return (1)
   elif (find(target,key)==find(target,key,s))and (find(target,key)!=find(target,key,(find(target,key)))):#if first but not last
      x=1
      s= find(target,key)
      return (countSubStringMatchRecursive(target,key,s,x)
   elif (find(target,key,s))==-1 and (find(target,key)!=find(target,key,s)):#if last but not first
      return (x+1)
   elif:(find(target,key,s))!=-1 and (find(target,key)!=find(target,key,s)):#if not last and not first
      x=x+1
      s= find(target,key,s)
      return (countSubStringMatchRecursive(target,key,s,x)

我在第8行遇到语法错误。我只想知道我在那里做错了什么。不要担心其他错误,我应该能够解决这些错误。我只是坚持这个。感谢。

5 个答案:

答案 0 :(得分:2)

您在第8行和最后一行中缺少右括号。实际上,相应的左括号是不必要的,你也可以改写这一行:

return countSubStringMatchRecursive(target,key,s,x)

另外,正如@rodion在评论中指出的那样,最后elif放错了:,删除了在左括号之前的那个。

谈论括号:在Python中你不必将if ... elif ... else语句的条件放在括号内,你应该删除它们。

答案 1 :(得分:1)

你在第8行有一个不匹配的paren。在最后添加另一个关闭的paren

return (countSubStringMatchRecursive(target,key,s,x))

同样的事情也适用于你的最终退货声明。

答案 2 :(得分:0)

您的括号不匹配。移除该行开头附近的(或在末尾添加)

答案 3 :(得分:0)

有几个问题:

  1. 你错过了第8行的闭幕式
  2. 你的函数体需要缩进。 (更新:已修复)
  3. 此外,您的上一个elif后面有:,需要 删除。即,

    elif: expression:
    

    应该是

    elif expression:
    
  4. 你的上一个陈述也缺少一个结束语

    return (countSubStringMatchRecursive(target,key,s,x)
    

    应该是

    return (countSubStringMatchRecursive(target,key,s,x))
    
  5. 最后,@ drewk关于看PEP 8的建议很好。我会定期回去查看。

    此外,您还有许多不必要的() ..它们不会造成任何伤害,但它们不是必需的,可能会降低代码的可读性。

答案 4 :(得分:0)

return (countSubStringMatchRecursive(target,key,s,x)

您错过了结束)。但你也不需要开放的那个; return语句的语法为return <expr>,因此任何有效表达式都可以直接跟随return。任何有效的表达式仍然是一个有效的表达式,如果用括号括起来,则表示完全相同的东西,但大多数只是在不需要时添加噪音。