"""
若一个数从左到右读与从右到左读都是一样,这个数就叫做回文数。例如,13731。
给定一个正整数,把它的每一个位上的数字倒过来排列组成一个新数,然后与原数相加。
如果是回文数则停止,如果不是,则重复这个操作,直到和为回文数为止。
例如:87,步骤如下:
STEP1:87+78=165
STEP2:165+561=726
STEP3:726+627=1353
STEP4: 1353+3531=4884
实现以上过程,求出得到回文数和经过的步数。
"""
def check(x):
"""
检查一个数是否为回文数。
参数:
x - 任意类型的输入,将被转换为字符串进行检查。
返回值:
布尔值,如果输入的数是回文数则返回True,否则返回False。
"""
x = str(x) # 将输入转换为字符串形式
for i in range(len(x) // 2): # 遍历字符串的一半长度
if x[i] != x[-i - 1]: # 如果任意一对对称字符不相等,则不是回文数
return False
return True
def gen(n):
"""
生成大于等于输入n的下一个回文数,并统计生成过程中的步数。
参数:
n - 整数,起始值,生成的回文数将大于等于此数。
返回值:
无,直接打印生成的回文数和过程中的步数。
"""
count = 0 # 记录生成回文数所需的步数
while not check(n): # 循环直到找到一个回文数
count += 1 # 步数加一
n_re = int(str(n)[::-1]) # 将当前数反转并转换回整数
n += n_re # 更新n为原数加上反转后的数
print(f'生成的回文数:{n}') # 打印最终的回文数
print(f'经过{count}步。') # 打印生成所需的步数
number = 89
gen(number) # 调用函数,以89为起始值生成下一个回文数
评论前必须登录!
注册