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

时间:2012-07-05 11:57:39

标签: 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) 

我收到错误

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

SyntaxError:语法无效

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

2 个答案:

答案 0 :(得分: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 if考虑使用Python的整齐elif结构,例如,

  elif key<tup[mid]:

答案 1 :(得分:3)

  • 您需要结束所有使用:开始新块的语句(即您在下一行中增加缩进级别的语句)
  • 您需要将else if X替换为elif X:
  • 无论用户输入什么,您都应使用raw_input代替input作为后者eval
  • return是一个声明,而不是一个函数,因此返回值周围不需要()