このコードは、文字列内の文字を再帰的に二分探索します。 print
文がコメントアウトされていない場合は文が実行されない場合
、再帰と二分でうまく動作するようだが、True
を返しif
文は発射していないようです。
def isIn(char, aStr):
'''
char: a single character
aStr: an alphabetized string
returns: True if char is in aStr; False otherwise
'''
b = sorted(aStr)
c = len(aStr)
# print("string b " + str(b))
# print("c " + str(c))
# print("element middle: " + str(b[round(c/2)]))
#print("char: " + str(char))
#print(str(char) == str(b[round(c/2)]))
if ((str(char) == str(b[round(c/2)]))): # this if statement does not seem to fire
return True
elif (c == 1 and char != str(b[round(c/2)])) or (c == 0 and char != "") :
return False
#print("false")
else:
#if str(char) == str(b[round(c/2)]):
# return True
# print("true")
if char > b[round(c/2)]:
isIn(char, b[round(c/2):c])
elif char < b[round(c/2)]:
isIn(char, b[0:round(c/2)])
else:
return False
#print('fales')
あなたが条件という意味ではない、それは「発生しません」と正しく – Li357
インデントされますことを確認してください'str(char)== str(b [round(c/2)])'は 'True'に評価されませんか?インデントが問題である場合、この問題は疑問点です。 –
ドゥープ? http://stackoverflow.com/questions/15210646/i-expect-true-but-get-none –