回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>检查回文</p>
<p>我对Python还不熟悉。但我做了调试。但找不到错误。你知道吗</p>
<pre><code>import string
def is_palindrome(str_1, lowest_index, highest_index):
punct = set(string.punctuation)
print(punct)
#remove punctuations
no_punct = ""
for char in str_1:
if char not in punct:
no_punct = no_punct + char
print(no_punct)
# rmv_whtspc = no_punct.rstrip()
rmv_whtspc = no_punct.replace(' ','')
print(rmv_whtspc)
str_2 = rmv_whtspc.lower()
print(str_2)
if lowest_index > highest_index:
return True
else:
if str_2[lowest_index] == str_2[highest_index]:
return is_palindrome(str_2, lowest_index+1, highest_index-1)
else:
return False
</code></pre>
<p>调用函数:</p>
<pre><code>str_1 = "Madama I am adam"
lowest_index = 0
highest_index = len(str_1)-1
print(is_palindrome(str_1, lowest_index, highest_index))
</code></pre>
<p>输出:</p>
<pre><code>{'{', '<', '_', '$', '"', ',', '&', '\\', ']', '`', '%', "'", '#', '*', '+', '>', '/', '?', '=', '^', ')', '[', '(',
'~', '!', '@', '|', '}', ':', '.', ';', '-'}
Madama I am adam
MadamaIamadam
madamaiamadam
Traceback (most recent call last):
File "recursion_5_2problem.py", line 27, in <module>
print(is_palindrome(str_1, lowest_index, highest_index))
File "recursion_5_2problem.py", line 19, in is_palindrome
if str_2[lowest_index] == str_2[highest_index]:
IndexError: string index out of range
</code></pre>