Python -有办法缩短我的Python代码吗?

kxxlusnw  于 2023-04-13  发布在  Python
关注(0)|答案(2)|浏览(96)

此问题已在此处有答案

How to check for palindrome using Python logic(35个回答)
昨天关门了。
我写了一个简短的脚本来告诉我用户输入的短语是否是回文,我想知道如何缩短当前的代码。
下面是当前代码:

def palindrome():
    string = input()
    stringremove = string.replace(" ", "")
    
    if stringremove[0] == stringremove[-1]:
        if stringremove[1] == stringremove[-2]:
            if stringremove[2] == stringremove[-3]:
                if stringremove[3] == stringremove[-4]:
                    print("It's a palindrome!")
                else:
                    print("It's not a palindrome!")
            else:
                print("It's not a palindrome!")
        else:
            print("It's not a palindrome!")
    else:
        print("It's not a palindrome!")
              
palindrome()

显然,我可以继续使用越来越长的短语/单词,但我认为有一种简单的方法可以用更短的代码来解决这个问题。

fcwjkofz

fcwjkofz1#

一般来说,您要查找的是循环,最好搜索python docs loops
以下是对您具体问题的快速回答:

def is_palindrome(s):
  for i in range(len(s)//2):
    if s[i]!=s[-1-i]: return False
  return True

这将检查s是否是回文。在您的示例中,按如下方式调用它:

string = input()
stringremove = string.replace(" ", "")
if is_palindrome(stringremove): print("It's a palindrome!")
else: print("It's not a palindrome!")

注意,这样输入和预处理就从函数中移走了,使它更通用。
至于回文函数本身,在python中有一种更短的方法,只需反转字符串(s[::-1],详细信息请参见Python slicing)并检查字符串是否相等:

def is_palindrome(s):
  return s == s[::-1]
s4n0splo

s4n0splo2#

尝试:

def palindrome(string : str):
    newstring = string.replace(" ", "") # removes Whitespace (so you can do 'taco cat' palindrome)
    newstring.lower()
    if newstring == newstring[::-1]: # [::-1] reverses string
        print("It's a palindrome!")
    else:
        print("It's not a palindrome!")

相关问题