0
好的。所以,我大概是这个星球上最愚蠢的人,但谁能告诉我,为什么这给了我一个错误(该计划是使用分搜索字符的按字母顺序排列的字符串搜索字符):python字符串索引超出范围
def isInIter(char, aStr):
print('char :'+char)
print('aStr :'+aStr)
isin = False
while(len(aStr) > 0):
if aStr[len(aStr)/2] == char:
isin = True
break
else:
if aStr[len(aStr)/2] > char:
aStr = aStr[0 : len(aStr)/2]
continue
if aStr[len(aStr)/2] < char:
aStr = aStr[(len(aStr)/2 + 1) :]
continue
return isin
错误:
isInIter('d','cddfggjkkqtwyy')
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-66-1de0eb4793fd> in <module>()
----> 1 isInIter('d','cddfggjkkqtwyy')
/home/user/Study/Ex/lec5_BisectionSearch.py in isInIter(char, aStr)
5 isin = False
6 while(len(aStr) > 0):
----> 7 if aStr[len(aStr)/2] == char:
8 isin = True
9 break
IndexError: string index out of range
但这按预期工作:
char = raw_input('char :')
aStr = raw_input('aStr :')
isin = False
while(len(aStr) > 0):
if aStr[len(aStr)/2] == char:
isin = True
break
else:
if aStr[len(aStr)/2] > char:
aStr = aStr[0 : len(aStr)/2]
continue
if aStr[len(aStr)/2] < char:
aStr = aStr[len(aStr)/2 + 1 :]
continue
print isin
我感谢你的帮助。
你可以直接搜索没有循环它。 Python提供了'in'关键字,可以帮助你搜索一个项目。您可以在单个语句中使用“if char in string”,它告诉您字符串是否存在于字符串中。 – user2109788
isInIter('d','cddfggjkkqtwyy')不会给我错误吗?和正常工作? – myildirim
看起来像一个非常糟糕的方式来搜索一个字符,但你的代码在我的机器上运行得很好 – adil