生成回文的函数
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")
。
我有以下似乎无法正确解决的问题。 我必须编写一个函数,将正整数 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")
。