如何解决产生回文的功能
我有以下我似乎无法正确解决的问题。 我必须编写一个函数,将正整数n作为输入并检查它是否是回文(正反数字相同)。如果是这样,我必须返回此号码。如果不是,我必须计算原始数字与相反数字的总和。重复该步骤,直到得到回文。这是我到目前为止的代码:
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)
当然会返回错误,因为不可能使用int(n) += int(r)
。但是,当不使用int
时,会将其添加为字符串,这也是不正确的。
我不确定我要解决多远。如何正确实现呢?
解决方法
您很近。您只需要为字符串的整数版本使用另一个变量即可。然后请清除包含字符串和整数的变量:
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")
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。