改进的Python代码回文

问题描述 投票:2回答:10

所以我最近实施,检查一个字,看它是否是一个回文代码。

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循环?

python palindrome simplify
10个回答
6
投票

不需要这种复杂的条件。你已经有一个相反的字符串(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(防止一些东西,可能以后发生)


0
投票

你可以也试试这个

def palindrome(str1):
    return str1==str1[::-1]
print(palindrome(str1)

以上答案返回一个布尔按照给定的字符串,如果它是一个回文打印真否则为假


4
投票

你可以做一个一个班轮:

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进行评估。让我告诉你一个例子:

Script

inp = input("Evaluate ")

print inp

Run

Evaluate "cheese" + "cake"
cheesecake

1
投票

这是在短短的1号线有简单的解决方案。 plandrom = lambda string: True if string == string[::-1] else False


0
投票

请检查该算法,

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

print is_palindrome('malayayalam')

0
投票

所以,我刚刚进入学习Python和我一直在试图these exercises,#8。虽然我看到很多这样的答案正在创造一个新的反向字符串(增加了内存开销),并比较两个字符串,我想我可以做这个利用较小的内存:

def is_palindrome(s):
    l=len(s)
    list_s=list(s)
    for i in range(0,l):                                            
        if(list_s[i] !=list_s[l-i-1]):
            return False
    else:
        return True

您可以使用打印语句来验证。所有我做的是比较第一索引到最后一个和第二个指数倒数第二个等等。希望帮助。


0
投票

检查计数器从集合

from collections import Counter

def is_palindrome(letters):
    return len([v for v in Counter(letters).values() if v % 2]) <= 1

0
投票

这里是我想出了另一种解决方案:

###Piece of code to find the palindrome####
def palindrome():
    Palindromee = input("Enter the palindrome \t:")
    index = 0
    length = len(Palindromee)
    while index < length:
         if Palindromee[0] == Palindromee[-1] :
               index +=1
    print ("Palindrome worked as expected")       

palindrome()

0
投票

写回文简单方法

a=raw_input("Enter the string : ")    # Ask user input

b= list(a)                            # convert the input into a list

print list(a)

b.reverse()                           # reverse function to reverse the 
                                      # elements of a list

print b

if list(a) == b:                      # comparing the list of input with b

   print("It is a palindrome")

else:

   print("It is not a palindrome")

0
投票

我们可以使用反向字符串函数来验证回文:

def palindrome(s):
    str=s[::-1]
    if s==str:
        return True
    else:
        return False

palindrome('madam')
© www.soinside.com 2019 - 2024. All rights reserved.