python中二进制搜索程序中的错误

The*_*uit -2 python binary-search

我喜欢一个非常简单的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) 
Run Code Online (Sandbox Code Playgroud)

我得到一个错误

File "binsearch.py", line 8
if key==tup[mid]
               ^
Run Code Online (Sandbox Code Playgroud)

SyntaxError:语法无效

我相信我错过了一些微不足道但无法弄清楚的东西.如果您觉得还有其他错误,请告诉我.谢谢 :)

Lev*_*von 5

 if key==tup[mid]
                 ^
Run Code Online (Sandbox Code Playgroud)

需要一个:在端部

                 |
                 v
 if key==tup[mid]:
Run Code Online (Sandbox Code Playgroud)

声明的其余部分也存在同样的问题:

  else if key<tup[mid]
                      ^
    search(start,mid,key)
  else if key>tup[mid]
                      ^
Run Code Online (Sandbox Code Playgroud)

除了:

而不是else if考虑使用Python的简洁elif构造,例如,

  elif key<tup[mid]:
Run Code Online (Sandbox Code Playgroud)

等等