アルファベット順の文字列を取り、その文字列内の特定の文字を検索するプログラムを作成しようとしています。真ん中の文字より半分大きい。
次のコードを試してみましたが、エラーが発生しました:
cannot concatenate 'str' and 'int' objects.|
文字列を半分に切り、正しい半分をプログラムに返して、文字を再度検索しようとしています。たとえば、キャラクターが真ん中のキャラクターより小さかった場合、右半分を捨て、左半分を返し、その真ん中を見つける必要があります。以下は、プログラムがハングするコード サンプルです。理由を教えてもらえますか?return isInF(char, aStr[:middle])
def isIn(char, aStr):
def toChars(aStr):
s = aStr.lower()
ans = ''
for c in s:
if c in 'abcdefghijklmnopqrstuvwxyz':
ans = ans + c
return ans
def isInF(aStr):
if len(aStr) == 0:
return False
elif len(aStr) == 1:
if char == aStr:
return True
else:
return False
elif len(aStr)> 1:
length = len(aStr)
middle = aStr[((length-1)/2)]
if char == middle:
return True
elif char < middle:
return isInF(char, aStr[:middle])
elif char > middle:
return isInF(char, aStr[middle+1:])
return isInF(toChars(aStr))
isIn ('c', 'aaaabbbbc')