首页 > 编程知识 正文

Python编程基础之判断回文数

时间:2023-11-21 15:19:54 阅读:293436 作者:OQVX

回文数是指一个数字从左往右读和从右往左读都一样,比如121,232等等。那么如何用Python判断一个数是否是回文数呢?下面就来详细阐述一下。

一、反转数字的方法判断

判断回文数最直接的方法就是将这个数字反转过来,与原来的数字进行比较,如果相等,则说明该数字是回文数;否则就不是回文数。下面是具体实现:

def is_palindrome(num):
    temp = num
    reverse = 0
    while temp > 0:
        reverse = reverse * 10 + temp % 10
        temp = temp // 10
    if num == reverse:
        return True
    else:
        return False

num = 12321
if is_palindrome(num):
    print(num, "是回文数")
else:
    print(num, "不是回文数")

上面的代码中,使用while循环将输入的数num反转得到一个新的数字reverse,并与原来的数字进行比较。如果相等,则说明该数字是回文数,否则就不是回文数。

二、字符串判断方法

另一个可行的方法是将数字转换成字符串,并将字符串反转,之后将两个字符串进行比较。如果相等,则说明该数字是回文数;否则就不是回文数。下面是具体实现:

def is_palindrome(num):
    s = str(num)
    if s == s[::-1]:
        return True
    else:
        return False

num = 12321
if is_palindrome(num):
    print(num, "是回文数")
else:
    print(num, "不是回文数")

在上面的代码中,使用切片[::-1]将字符串反转得到一个新的字符串s[::-1],之后将该字符串与原字符串s进行比较。如果相等,则该数字是回文数;否则就不是回文数。

三、数学技巧判断

还有一种比较巧妙的方法是只反转数字的一半,之后将两个数字进行比较。具体实现方法如下:

def is_palindrome(num):
    if num < 0 or (num % 10 == 0 and num != 0):
        return False
    reverse = 0
    while num > reverse:
        reverse = reverse * 10 + num % 10
        num = num // 10
    return num == reverse or num == reverse // 10

num = 12321
if is_palindrome(num):
    print(num, "是回文数")
else:
    print(num, "不是回文数")

在上面的代码中,首先判断num是否小于0或者是10的倍数,如果是,则说明该数字不是回文数。之后使用while循环将输入的数num反转数字的一半得到一个新的数字reverse,并更新原来的数字num。最后将num与reverse进行比较,如果相等,则说明该数字是回文数;否则就不是回文数。

四、总结

至此,我们介绍了三种判断回文数的方法:反转数字的方法、字符串判断方法以及数学技巧判断方法。其中数学技巧判断方法是最为巧妙的一种方法,只需要反转数字的一半,同时比较两个数字即可,具有比较高的效率。而对于其他两种方法,反转数字的方法可读性比较强,而字符串判断方法则比较简单,适合用于程序中数字个数较少的情况下。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。