編集:注:アルファベットの一部ではない文字はすべて無視することになっています。Python:入力したテキストがパブリドームかどうかを確認する再帰関数を作成しようとしています
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)
私は「もし」ステートメントの前に印刷(テキスト)を行うことで、「テキスト」変数のprint文を入力してデバッグしようとしました。
これらは私がテストケースをしようとした場合、is_palindrome(「AABBCC」)
aabbcc
['a', 'b', 'b', 'c', 'c']
['b', 'b', 'c', 'c']
['b', 'c', 'c']
['c', 'c']
['c']
[]
取得結果であるので、それはテキストのみ」にスキップすることによって、リストの最初の項目を毎回削除しているようです.remove(text [0]) "最後のelseステートメントで。
どうすればこの問題を解決できますか?思考?
あなたは、アレイ全体に単一のアレイ項目を比較します?比較する際には、チェックインと同等のものを使用してみてください。 – Brody
ええ、問題は、単一項目を配列全体と比較することです。ありがとう! –