Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
学习Python else语法错误_Python_Syntax_If Statement_Python 2.7 - Fatal编程技术网

学习Python else语法错误

学习Python else语法错误,python,syntax,if-statement,python-2.7,Python,Syntax,If Statement,Python 2.7,大家好,我正在为开放课程做练习题来学习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 f

大家好,我正在为开放课程做练习题来学习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行遇到语法错误。我只是想知道我做错了什么。别担心其他的错误,我应该能把它们解决掉。我只是坚持这一点。谢谢。

第8行和最后一行缺少一个右括号。实际上,不需要相应的左括号,您不妨重写这些行,如下所示:

return countSubStringMatchRecursive(target,key,s,x)
此外,正如@rodion在评论中指出的,最后一个
elif
有一个错位的
,请删除右括号前的一个


谈到括号:在Python中,如果。。。埃利夫。。。否则语句在括号内,您应该删除它们。

您的括号不匹配。删除行首附近的
),或在行尾添加一个

第8行有一个不匹配的paren。在末尾添加另一个关闭参数

return(countSubStringMatchRecursive(目标、键、s、x))


同样的情况也适用于您的最终返回声明。

有几个问题:

  • 您在第8行缺少一个结束参数
  • 函数体需要缩进。(更新:已修复)

  • 另外,您最后的
    elif
    后面有一个
    ,需要 删除。即

    elif: expression:
    
    应该是

    elif expression:
    
    return (countSubStringMatchRecursive(target,key,s,x))
    
  • 您的上一份声明也缺少结尾部分

    return (countSubStringMatchRecursive(target,key,s,x)
    
    应该是

    elif expression:
    
    return (countSubStringMatchRecursive(target,key,s,x))
    
  • 最后,@drewk建议大家看一看这本书,这是一个很好的建议。我会定期回去自己复习

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

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

    您缺少一个结束语
    。但你也不需要开场白;
    return
    语句的语法是
    return
    ,因此任何有效表达式都可以直接跟随
    return
    。任何有效表达式都仍然是有效表达式,如果用括号括起来,则其含义完全相同,但大多数情况下,这只会在不需要时增加噪音。

    上一个
    elif
    表达式前有一个冒号。也可能是个问题。如果您遵循中的指导原则,其他人会发现阅读Python代码更容易。你会发现它也更容易阅读!!!谢谢你的评论,非常有帮助。我已经修复了我发现的问题和更多问题,并且工作正常。:)谢谢你的评论,非常有帮助。我已经修复了我发现的问题和更多问题,并且工作正常。:)谢谢你的评论,非常有帮助。我已经修复了我发现的问题和更多问题,并且工作正常。:)谢谢你的评论,非常有帮助。我已经修复了我发现的问题和更多问题,并且工作正常。:)谢谢你的评论,非常有帮助。我已经修复了我发现的问题和更多问题,并且工作正常。:)