Ich habe eine Funktion zu testen, ob ein String Palindrom ist oder nicht:Funktion None zurückgibt, auch wenn ich zurückkehren Befehl
def palindrome(raw_text):
# first to convert raw_text to a string of lower case letters and remove the space
text = raw_text.lower()
text = text.replace(' ', '')
print('text is now', text)
print('length of text is', len(text))
if len(text) == 1 or len(text) == 0:
return True
else:
if text[0] == text[-1]:
print('so far so good')
palindrome(text[1:-1])
else:
return False
Um es für Debug deutlich zu machen, habe ich ein paar Druckbefehl, mir zu helfen . wenn ich versuche:
raw_text = 'abcba'
print(palindrome(raw_text))
ich bekommen:
text is now abcba
length of text is 5
so far so good
text is now bcb
length of text is 3
so far so good
text is now c
length of text is 1
None
Warum bin ich am Ende eine None bekommen? Ich habe den Befehl return True
haben für len(text) == 1 or 0
Wenn ich nur raw_text = 'a'
geben, wird es mir geben:
text is now a
length of text is 1
True
BTW, können Sie dies ohne Rekursion leicht tun ... es sei denn, dies ist eine Übung über Rekursion beim Lernen. –
@ PM2Ring ist dies in der Tat, Rekursion zu üben. Ansonsten werde ich einfach [:: - 1] zum Vergleichen verwenden. Danke –