Python回文

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

所以我的任务是查看并检查一个正整数,如果它是回文。我已经完成了所有事情但需要最后一块的帮助。并且这是从用户给出的那个产生新的回文的任务。我在使用while循环的正确轨道上还是应该使用其他东西?所以结果就是如果你把192放回去生成一个回文.... 483 867 1635 6996

"""Checks if the given, positive number, is in fact a palindrome"""

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

"""Reverses the given positive integer"""

def reverse_int(N):
    r = str(N)
    x = r[::-1]
    return int(x)


def palindrome_generator():
    recieve = int(input("Enter a positive integer. "))
    if (palindrome(recieve) == True):
        print(recieve, " is a palindrome!")
    else:
        print("Generating a palindrome...")
        while palindrome(recieve) == False:
            reverse_int(recieve) + recieve
python palindrome
2个回答
3
投票

如果我正确理解您的任务,以下应该可以解决问题:

def reverse(num):
    return num[::-1]

def is_pal(num):
    return num == reverse(num)

inp = input("Enter a positive number:")

if is_pal(inp):
    print("{} is a palindrome".format(inp))
else:
    print("Generating...")
    while not is_pal(inp):
        inp = str(int(inp) + int(reverse(inp)))
        print(inp)

变量inp始终是一个字符串,只能转换为int进行算术运算。


1
投票

多年来我一直在使用这个解决方案来检查数字和文本字符串的回文。

    def is_palindrome(s):
        s = ''.join(e for e in str(s).replace(' ','').lower() if e.isalnum())
        _len = len(s)
        if _len % 2 == 0:
            if s[:int(_len/2)] == s[int(_len/2):][::-1]:
                return True
        else:
            if s[int(_len/2+1):][::-1] == s[:int(_len/2)]:
                return True
        return False
© www.soinside.com 2019 - 2024. All rights reserved.