蟒蛇。制作一个函数,用于递归地测试单词是否为回文

时间:2015-03-16 20:23:20

标签: python

我正在尝试制作一个程序,使用递归函数测试单词是否为回文。我几乎已经有了它的工作但是如果第一个和最后一个是相同的话,我只是让它继续下一个字母。

word = input("enterword")
word = word.lower()

def palindrom(word):
    if len(word) == 1 or len(word) == 0:
        return 0;
    if word[0] == word[-1]:
        print(word[0], word[-1])
        palindrom(word);
    else:
        return 1;

test = palindrom(word)
if test == 0:
    print("Yes")
elif test == 1:
    print("No")

所以现在它测试第一个和最后一个字母是否相同,如果是,应该再次运行该函数。我只需要检查单词[1]和单词[-2]但我遇到了一些麻烦。我尝试拆分单词并弹出字母,但它一直在查看列表的长度为1.因此,如果有办法让它获得整个拆分列表的长度,那也可以。

4 个答案:

答案 0 :(得分:3)

当您以递归方式调用方法并正确切片时,您只是错过了return语句:

def palindrom(word):
    if len(word) == 1 or len(word) == 0:
        return 0
    if word[0] == word[-1]:
        print(word[0], word[-1])
        return palindrom(word[1:-1])
    else:
        return 1

答案 1 :(得分:0)

您缺少return语句,还需要在每次递归时传递简化字palindrom(word[1:-1])

word = "viooiv"
word = word.lower()


def palindrom(word):
    if len(word) == 1 or len(word) == 0:
        return 0 
    if word[0] == word[-1]:
        print(word[0], word[-1])
        return palindrom(word[1:-1])
    else:
       return 1 

test = palindrom(word)
if test == 0:
    print("Yes")
elif test == 1:
    print("No"

输出:

 ('v', 'v')
 ('i', 'i')
 ('o', 'o')
 Yes

答案 2 :(得分:0)

尝试使用此功能调用单词上的回文:

def palindrome(word, i = 0):
    if i == len(word):
        return word[0] == word[-1]

    if word[i] == word[-i - 1]:
        return palindrome(word, i + 1)

    else:
        return False

答案 3 :(得分:0)

更短的代码:

def checkpalindrome(value):
    valuelen = len(value)
    if valuelen < 2:
        print("palindrome")
    else:
        checkpalindrome(value[1:valuelen-1]) if value[0] == value[-1] else print('Not palindrome')