生成回文的函数

Function to generate a palindrome

我有以下似乎无法正确解决的问题。 我必须编写一个函数,将正整数 n 作为输入并检查它是否是回文(前后相同的数字)。如果是,我要return这个号码。如果不是,我必须计算原始数字与反转数字的总和。重复此步骤,直到结果为回文为止。这是我目前的代码:

x = input("Enter a positive integer: ")

def generate_palindrome(n):
    if n == n[::-1]:
        return n
    else:
        while n != n[::-1]:
            r = n[::-1]
            int(n) += int(r)
    return n

generate_palindrome(x)

当然,这 return 是一个错误,因为 int(n) += int(r) 是不可能的。但是,当不使用 int 时,它会将其添加为字符串,这也是不正确的。

我不确定我离解决方案还有多远。我该如何正确实施?

你很接近。您只需要另一个变量作为 string.Then 的整数版本,只需清楚哪个包含字符串,哪个包含整数:

def generate_palindrome(n):
    if n == n[::-1]:
        return n
    else:
        while n != n[::-1]:   # n needs to be a string for this to work
            r = int(n[::-1])  # r and s need to be numbers for correct addition
            s = int(n)
            n = str(r + s)    # n needs to still be a string for the next loop iteration
    return n

generate_palindrome("989")
# '989'

generate_palindrome("98")
# '8813200023188'

FWIW,我不知道 this is always guaranteed to return a reasonably sized number for every input。例如,我放弃了generate_palindrome("5798")