2

こんにちは、 MIT 6.00 Intro to Computer Scienceで Open course の演習問題を解いて 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に が間違って配置されている:ため、左括弧の直前にあるものを削除します。

括弧について言えば、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

かっこが一致していません。(行頭近くの を削除するか)、末尾に a を追加します。

于 2012-06-07T00:11:30.133 に答える
0

いくつかの問題があります:

  1. 8行目に閉じ括弧がありません
  2. 関数の本体をインデントする必要があります。(更新:修正されました)
  3. また、最後elifには:その後に権利があり、削除する必要があります。すなわち、

    elif: expression:
    

    する必要があります

    elif expression:
    
  4. 最後のステートメントにも閉じ括弧がありません

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

    する必要があります

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

最後に、 PEP 8を見ることについての @drewk の推奨事項は良いものです。私は定期的に戻って自分で見直します。

また、不要な()s がいくつかあります。害はありませんが、不要であり、コードの可読性を低下させる可能性があります。

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

締めくくりがありません)。しかし、オープニングも必要ありませんでした。returnステートメントの構文はreturn <expr>であるため、有効な式であれば何でも の直後に置くことができますreturn。有効な式はすべて、括弧で囲んだ場合でも有効な式であり、まったく同じことを意味しますが、ほとんどの場合、必要のないときにノイズが追加されるだけです。

于 2012-06-07T00:14:48.077 に答える