Python 如何检查一个字母是否等于一个字母
我有这个代码,目标是看一个单词是否是回文,如果这个单词是回文,那么应该返回true,如果不是,则返回false。 现在它总是返回false 以下是我目前的代码:Python 如何检查一个字母是否等于一个字母,python,Python,我有这个代码,目标是看一个单词是否是回文,如果这个单词是回文,那么应该返回true,如果不是,则返回false。 现在它总是返回false 以下是我目前的代码: # main.py def pal(string): if len(string)==1 or len(string)==0: return True if string[1] == string[len(string)-1]: pal(string[1,-1]) else: retu
# main.py
def pal(string):
if len(string)==1 or len(string)==0:
return True
if string[1] == string[len(string)-1]:
pal(string[1,-1])
else:
return False
print(pal("dad"))
请告诉我如何修复它,不要试图缩短它,因为我想从错误中吸取教训。首先,您的“第一个字符等于最后一个字符”检查应该是
if string[0] == string[-1]:
字符串/列表/等的索引为0,这意味着第一个元素的索引为0。在python中,您可以通过使用索引-1
(或者使用-2
,等等)访问字符串/列表的最后一个元素,该索引从数组的后面向后计数。其他语言确实要求您获取字符串/列表的长度并减去一,但在python中,string[len(string)-1]
和string[-1]
在功能上是相同的
接下来,“切片”字符串或列表的语法是:
,而不是,
:
pal(string[1:-1])
最后,您需要返回这个递归调用。只调用函数而不显式返回它不会做任何事情:
return pal(string[1:-1])
首先,您对“第一个字符等于最后一个字符”的检查应该是
if string[0] == string[-1]:
字符串/列表/等的索引为0,这意味着第一个元素的索引为0。在python中,您可以通过使用索引-1
(或者使用-2
,等等)访问字符串/列表的最后一个元素,该索引从数组的后面向后计数。其他语言确实要求您获取字符串/列表的长度并减去一,但在python中,string[len(string)-1]
和string[-1]
在功能上是相同的
接下来,“切片”字符串或列表的语法是:
,而不是,
:
pal(string[1:-1])
最后,您需要返回这个递归调用。只调用函数而不显式返回它不会做任何事情:
return pal(string[1:-1])
当您递归时,它应该是
string[1:-1]
而不是逗号。将第二个if语句更改为if string[0]==string[len(string)-1]
并且它应该是return pal(…)
,因为现在它将返回None
。当您递归时,它应该是string[1:-1]
而不是逗号。将第二个if语句更改为if string[0]==string[len(string)-1]
它也应该是return pal(…)
,因为现在它将返回None
。如果string[0]==string[len(string)-1]这是公平的,但我更喜欢string[-1]
也是。如果string[0]==string[len(string)-1]公平起见,它可以是,但我也更喜欢string[-1]
。