-2

こんにちは、バイナリ検索を実装するための非常に単純な Python プログラムを作成しています。

tup=input("enter tup:")
start=0
length=len[tup]
end=tup[length-1]
mid=(int(start)+int(end))/2
key=input("enter value to search")
def search(start,end,key):
  if key==tup[mid]
    print mid
  else if key<tup[mid]
    search(start,mid,key)
  else if key>tup[mid]
    search(mid,end,key)
  else
    return(-1) 

次のようなエラーが表示されます

File "binsearch.py", line 8
if key==tup[mid]
               ^

SyntaxError: 無効な構文

些細なことを見逃していると思いますが、理解できません。他にエラーがあると思われる場合はお知らせください。ありがとう :)

4

2 に答える 2

5
 if key==tup[mid]
                 ^

:最後にが必要です

                 |
                 v
 if key==tup[mid]:

ステートメントの残りの部分でも同じ問題があります。

  else if key<tup[mid]
                      ^
    search(start,mid,key)
  else if key>tup[mid]
                      ^

余談

else ifPython のきちんとした構成を使用することを検討する代わりにelif、たとえば、

  elif key<tup[mid]:

于 2012-07-05T11:58:36.077 に答える
3
  • 新しいブロックを開始するすべてのステートメントを終了する必要があります:(つまり、次の行でインデント レベルを上げるステートメント)。
  • else if Xと交換する必要がありますelif X:
  • as the後者のraw_input代わりに、ユーザーが入力したものを使用する必要があります。inputeval
  • return()は関数ではなくステートメントであるため、戻り値を囲む必要はありません。
于 2012-07-05T11:59:42.163 に答える