2

嗨,我正在通过MIT 6.00 Intro to Computer Science的开放课程练习题来学习 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 行遇到语法错误。我只想知道我在那里做错了什么。不要担心其他错误,我应该能够解决这些错误。我只是坚持这一点。谢谢。

4

5 回答 5

2

您在第 8 行和最后一行缺少右括号。实际上,相应的左括号是不必要的,您不妨将这些行重写为:

return countSubStringMatchRecursive(target,key,s,x)

此外,正如@rodion 在评论中指出的那样,最后一个elif有一个misplaced :,删除左括号之前的那个。

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

于 2012-06-07T00:11:23.813 回答
1

您在第 8 行有一个不匹配的括号。在末尾添加另一个关闭括号

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

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

于 2012-06-07T00:11:39.220 回答
0

你有一个不匹配的括号。删除行首(附近的或)在末尾添加一个。

于 2012-06-07T00:11:30.133 回答
0

有几个问题:

  1. 您在第 8 行缺少一个结束括号
  2. 你的函数的主体需要缩进。(更新:已修复)
  3. 此外,您的最后一个后面elif有一个:权利,需要删除。IE,

    elif: expression:
    

    应该

    elif expression:
    
  4. 您的最后一条语句也缺少结束括号

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

    应该

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

最后,@drewk 关于查看PEP 8的建议是一个很好的建议。我会定期回过头来自己回顾一下。

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

于 2012-06-07T00:12:34.020 回答
0
return (countSubStringMatchRecursive(target,key,s,x)

你错过了一个结束)。但是你也不需要开场白。语句的语法returnreturn <expr>,因此任何有效表达式都可以直接跟随在return. 任何有效的表达式仍然是有效的表达式,如果你用括号括起来,它的含义完全相同,但主要是在不需要时增加噪音。

于 2012-06-07T00:14:48.077 回答