改进Python回文cod

2024-06-16 10:40:26 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我最近实现了一个代码,检查一个单词是否是回文。

def isPalindrome():
    string = input('Enter a string: ')
    string1 = string[::-1]
    if string[0] == string[(len(string)-1)] and string[1:(len(string)-2)] == string1[1:(len(string)-2)]:
            print('It is a palindrome')
    else:
        print('It is not a palindrome')
isPalindrome()

我想知道是否有人能给我一些简化代码的建议。

编辑-如果我要使函数成为一个带有语句string == string1的迭代函数,我如何停止无尽的while循环?我需要一个计数来停止while循环吗?


Tags: 函数代码inputstringlenisdefit
3条回答

这里有一个简单的解决方案,只需1行即可。

plandrom = lambda string: True if string == string[::-1] else False

不需要这么复杂的条件。您已经有一个颠倒的字符串(string[::-1])。

你需要做的就是:

def isPalindrome():
    string1 = input('Enter a string: ')
    string2 = string1[::-1]
    if string1 == string2:
        return 'It is a palindrome'
    return 'It is not a palindrome'

isPalindrome()

(顺便说一下,不要使用string作为变量名。这是内置模块的名称)

最好是返回字符串而不是打印它们。这样,您的函数就不会return None(防止以后发生某些事情)

你可以在一行中完成:

return "Is a palindrome" if string == string[::-1] else "Not a palindrome"

示例脚本:

>>> string = "stanleyyelnats"
>>> print "Is a Palindrome" if string == string[::-1] else "Not a palindrome"
>>> Is a Palindrome

您也可以这样做(尽管速度较慢):

print "Is a Palindrome" if string == ''.join(reversed(string)) else "Not a palindrome"

另外,使用raw_input而不是input。因为input将被计算。我给你举个例子:

脚本

inp = input("Evaluate ")

print inp

跑步

Evaluate "cheese" + "cake"
cheesecake

相关问题 更多 >