程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

Python第108题:查找最近的回文数【PythonTip题库300题】

hfteth 2025-05-05 15:54:58 技术文章 14 ℃

1、编程试题:

回文数是指从前往后读和从后往前读都是一样的数字,比如 121。

最近的回文数指的是离给定数字最近的回文数,比如给定数字 125,最近的回文数是121。

编写一个程序,查找离给定整数最近的回文数。

定义函数find_closest_palindrome(),参数为num。

在函数内部,返回最近的回文数。如果有两个回文数的绝对距离相同,返回较小的数。

如果给定数字本身就是回文数,则返回该数字。

示例输入

245

示例输出

242

解释:

测试输入 245 的最近回文数是 242。

2、代码实现:

可编辑代码如下:

#!/usr/bin/python3.9
# -*- coding: utf-8 -*-
#
# Copyright (C) 2024 , Inc. All Rights Reserved
#
# @Time      : 2024/2/11 7:46
# @Author    : fangel
# @FileName  : 108. 查找最近的回文数.py
# @Software  : PyCharm

def is_palindrome(n):
    return str(n) == str(n)[::-1]

# 定义函数
def find_closest_palindrome(num):
    #步骤1:num是回文数就直接返回
    if is_palindrome(num):
        return num
    #步骤2:将num赋值给i和j,i循环计数不断增加,j循环计数不断减少,目的是找出高于和低于num的两个数
    i = num
    j = num
    while(True):
        if not is_palindrome(i):
            i += 1
        else:
            break
    while (True):
        if not is_palindrome(j):
            j -= 1
        else:
            break
    #步骤3:找到这两个数后,再来判断和num之间的距离,找出离num最近的数
    if i - num >= num - j:
        return j
    else:
        return i

# 从用户处获取输入
num = int(input())
# 调用函数
print(find_closest_palindrome(num))

3、代码分析:

本例先设计一个函数用于判断是否是回文数;然后在左右查找回文数后判断与当前数字的距离,以便找到最近的数字;

4、运行结果:

输入:

24

输出:

22

Tags:

最近发表
标签列表