Dieser Code führt eine rekursive Halbierungssuche nach einem Zeichen in einer Zeichenfolge aus. Wenn die Anweisung nicht ausgelöst wird
Wenn die print
Aussagen nicht kommentiert heraus, so scheint es gut mit der Rekursion und bisection zu arbeiten, aber die if
Anweisung, die True
kehrt scheint nicht zu schießen.
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')
Achten Sie darauf, es richtig – Li357
Mit „nicht ausgelöst“ eingekerbt, meinen Sie, dass die Bedingung 'str (char) == str (b [rund (c/2)])' wird nicht zu 'True' ausgewertet? Wenn Einrückung das Problem ist, ist diese Frage ein strittiger Punkt. –
Ein Betrogener? http://stackoverflow.com/questions/15210646/i-expect-true-but-get-none –