Python 如何检查一个字母是否等于一个字母

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

我有这个代码,目标是看一个单词是否是回文,如果这个单词是回文,那么应该返回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:
    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]