Düzenleme: Not: Alfabenin bir parçası OLMAYAN karakterler görmezden gelmemem gerekiyordu.Python: Girdiğim metnin palidrom olup olmadığını kontrol eden özyinelemeli bir işlev oluşturmaya çalışıyorum
def is_palindrome(text):
'''
A Recursive Function that returns True if the parameter, text, is a palindrome, False if not.
Ignores capitalization, punctuation, and spaces.
text: a String
returns True or False
'''
text = list(text)
if len(text) == 0:
return True
else:
if text[0] == ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]:
if text[-1] == ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]:
if text[0].lower() == text[-1].lower():
text.remove(text[0])
text.remove(text[-1])
return is_palindrome(text)
else:
return False
else:
text.remove(text[-1])
return is_palindrome(text)
else:
text.remove(text[0])
return is_palindrome(text)
ben "eğer" ifadesi önce baskı (metin) yaparak "metin" değişkeninin bir baskı beyanı girerek ayıklama çalıştı. Ben, is_palindrome ("aabbcc")
aabbcc
['a', 'b', 'b', 'c', 'c']
['b', 'b', 'c', 'c']
['b', 'c', 'c']
['c', 'c']
['c']
[]
Yani sadece karşı "metni atlayarak listeden her zaman ilk öğe çıkarmadan gibi görünüyor test vakası çalışırsanız
Bunlar
alıyorum sonuçlarıdır .remove (text [0]) "en sondaki ifadede.Bunu nasıl düzeltebilirim? Düşünceler?
bütün bir diziye tek dizi öğesi karşılaştırıyorsunuz ? Karşılaştırırken bir kontrol eşdeğerini kullanmayı deneyin. – Brody
Evet, sorun, tek bir öğeyi dizinin tamamını karşılaştırmaktır. Teşekkürler! –