欢迎访问宙启技术站
智能推送

Python编写案例:判断是否为回文数

发布时间:2023-12-04 15:25:45

编写一个Python函数,判断一个整数是否为回文数。

回文数是指正序(从左向右)和倒序(从右向左)读都是相同的整数。例如,121是回文数,而123不是回文数。

下面是一个简单的实现该功能的例子:

def is_palindrome(num):
    # 将整数转换为字符串
    num_str = str(num)
    
    # 如果字符串与其翻转后的字符串相同,则是回文数
    if num_str == num_str[::-1]:
        return True
    
    return False

我们可以使用该函数来判断一个整数是否为回文数。例如:

num = 121
if is_palindrome(num):
    print(f"{num}是回文数")
else:
    print(f"{num}不是回文数")

输出结果为:

121是回文数

对于输入的整数123,输出结果为:

123不是回文数

上述代码中,我们首先使用str()函数将整数转为字符串,然后使用字符串切片[::-1]获取字符串的翻转形式。如果翻转后的字符串与原字符串相同,则返回True,表示是回文数;否则返回False,表示不是回文数。

这是一个简单的方法,但并不高效。可以使用更高效的方法进行判断。一种常见的方法是通过取整和取余操作,将整数分为前半部分和后半部分,然后将后半部分反转,最后与前半部分进行比较。如果相同,则是回文数。以下是使用该方法的实现:

def is_palindrome(num):
    # 特殊情况:对于负数和个位数为0的非零数,不是回文数
    if num < 0 or (num % 10 == 0 and num != 0):
        return False
    
    # 反转后半部分
    reverse_num = 0
    while num > reverse_num:
        reverse_num = reverse_num * 10 + num % 10
        num //= 10
    
    # 当数字长度为奇数时,可以通过reverse_num // 10去除中位数
    # 例如,12321,循环结束时,reverse_num=123,num=12
    # 当数字长度为偶数时,此时num和reverse_num长度相同
    return num == reverse_num or num == reverse_num // 10

使用该方法判断整数是否为回文数的效率更高。例如:

num = 121
if is_palindrome(num):
    print(f"{num}是回文数")
else:
    print(f"{num}不是回文数")

输出结果仍然为:

121是回文数

这种方法避免了将整数转为字符串的开销,通过直接操作整数来判断是否为回文数。