利用Python判断整数是否是回文数的3种方法总结

 更新时间:2021年07月07日 09:35:21   作者:一条自私的鱼  
这篇文章主要给大家介绍了关于如何利用Python判断整数是否是回文数的3种方总结,回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数,需要的朋友可以参考下

前言

所谓回文数,就是说一个数字从左边读和从右边读的结果是一模一样的,比如12321。本文通过三个方法详细介绍了判断的方法,下面来一起看看吧

方法一:逐位判断

原理: 用一个while循环,将一个数每次都取出首位和末位,判断是否相等,只要有一次不相等退出即可。

回文数的判断条件:加入一个变量位数,如果这个数是奇数,位数为1时,即最中间那一位数,此时退出即可,同理,偶数,位数为0时,退出。

问题:

  • 如何判断位数
  • 如何逐位取值

优点: 思路简单

解决:

判断位数下面程序即可

	y=x
    weishu=0
    while x:
        weishu+=1
        x=x//10

先将判断的x赋值给y,当x不为0时,表明现在x还有位数,位数+1,x/10减少一位,但要记住,用地板除(//)直接得到int整数,否则用/会出现浮点数

逐位取值:

		a=y//(10**(weishu-1))
        b=y%10
        if a!=b:
            print("不是回文数。")
            break
        weishu-=2
        y=y//10
        y=y%(10**weishu)

取得首位只要地板除以相应的位数,把首位后面的数舍去,比如一个五位数,地板除10000(10的4次方,所以是位数-1),就会得到首位,末尾比较简单,只要对10取模得到余数就是各位,a是首位,b是末位。

判断首尾相等后,先将位数-2,然后将首尾的数字都给删掉,删掉末位//10即可,删掉首位:如果是五位数,现在删掉末位后是四位数,地板与1000取模即可

然后是判断如何判断退出循环

如上文,判断位数最后的值即可

最后判断负数和个位数即可

实现代码如下:

x=int(input("请输入一个整数:"))
if x<0:
    print("不是回文数。")
elif not x//10:
    print("是回文数。")
else:
    y=x
    weishu=0
    while x:
        weishu+=1
        x=x//10
    while True:
        a=y//(10**(weishu-1))
        b=y%10
        if a!=b:
            print("不是回文数。")
            break
        weishu-=2
        if weishu==1:
            print("是回文数。")
            break
        if not weishu:
            print("是回文数。")
            break
        y=y//10
        y=y%(10**weishu)

方法二:得到颠倒后的数判断

原理: 每一个回文数从中间切开前后都是相等的,所以得到一个回文数后面的数与前面的数比较即可

那么问题来了,如果是奇位数,怎么判断?

解决: 只要最后得到的前面的数或者后面的数除去末位数与另一个相等即可,因为奇位数中间的数不用管,其他的数相等就可以,所以删去末位判断是否相等

难点: 如何得到后面的数?

每次将后面的数乘上10,然后加上前面数的末位,前面的数地板除10消除末位即可

如何判断后面的数已经取好了,即退出循环的判断条件是:

就是当后面的数已经大于等于前面的数就可以退出循环了

优点: 代码简单

实现程序如下:

	hou=0
    while(x>hou):
        hou=hou*10+x%10
        x//=10
    if x==hou or x==(hou//10):
        print("是回文数。")
    else:
        print("不是回文数。")

最后判断负数和末位是0但不是0的数,他们一定不是回文数,因为开头不能是0

个位数此程序能够判断,后面的数就是此个位数,地板除10之后和前面一样都是10,即回文数

最终程序:

x=int(input("请输入一个整数:"))
if x<0 or(x%10==0 and x!=0):
    print("不是回文数。")
elif not x//10:
    print("不是回文数。")
else:
    hou=0
    while(x>hou):
        hou=hou*10+x%10
        x//=10
    if x==hou or x==(hou//10):
        print("是回文数。")
    else:
        print("不是回文数。")

方法三:字符串处理

原理: 字符串其实是序列,我们只要将字符串倒过来判断是否和原字符串相等就可以了

反转可以用x[::-1]

实现代码如下

x=input("请输入一个整数:")
if x==x[::-1]:
    print("是回文数。")
else:
    print("不是回文数。")

要是你说还能不能更高级一点,还可以用条件表达式这样写

x=input("请输入一个整数:")
print("是回文数。") if x==x[::-1] else print("不是回文数。")

但是如果他给你一个09890也会报错,具体解决可以先转化为int,再转化为str

最终成品:

x=int(input("请输入一个正整数:"))
x=str(x)
print("是回文数。") if x==x[::-1] else print("不是回文数。")

总结

到此这篇关于利用Python判断整数是否是回文数的3种方法总结的文章就介绍到这了,更多相关Python判断整数是回文数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实现希尔伯特变换(Hilbert transform)的示例代码

    Python实现希尔伯特变换(Hilbert transform)的示例代码

    希尔伯特变换(Hilbert transform)是一个对函数产生定义域相同的函数的线性算子,而且希尔伯特变换在信号处理中很重要,所以本文和大家分享了Python实现希尔伯特变换的代码,需要的可以参考一下
    2023-04-04
  • 详解python tkinter教程-事件绑定

    详解python tkinter教程-事件绑定

    这篇文章主要介绍了python tkinter事件绑定,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Python之字典及while循环解读

    Python之字典及while循环解读

    这篇文章主要介绍了Python之字典及while循环解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • pycharm 实现复制一行的快捷键

    pycharm 实现复制一行的快捷键

    这篇文章主要介绍了pycharm 实现复制一行的快捷键,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • python实现的守护进程(Daemon)用法实例

    python实现的守护进程(Daemon)用法实例

    这篇文章主要介绍了python实现的守护进程(Daemon)用法,实例分析了Python进程操作的相关技巧,需要的朋友可以参考下
    2015-06-06
  • Tensorflow 1.0之后模型文件、权重数值的读取方式

    Tensorflow 1.0之后模型文件、权重数值的读取方式

    今天小编就为大家分享一篇Tensorflow 1.0之后模型文件、权重数值的读取方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • selenium如何定位span元素的实现

    selenium如何定位span元素的实现

    这篇文章主要介绍了selenium如何定位span元素的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • python基础之文件操作

    python基础之文件操作

    这篇文章主要介绍了python基础之文件操作,文中有非常详细的代码示例,对正在学习python的小伙伴们有一定的帮助,需要的朋友可以参考下
    2021-04-04
  • python网络编程之数据传输UDP实例分析

    python网络编程之数据传输UDP实例分析

    这篇文章主要介绍了python网络编程之数据传输UDP实现方法,实例分析了Python基于UDP协议的数据传输实现方法,需要的朋友可以参考下
    2015-05-05
  • Python实现敏感词过滤的五种方法

    Python实现敏感词过滤的五种方法

    在我们生活中的一些场合经常会有一些不该出现的敏感词,我们通常会使用*去屏蔽它,一些骂人的敏感词和一些政治敏感词都不应该出现在一些公共场合中,这个时候我们就需要一定的手段去屏蔽这些敏感词,下面我来介绍一些简单版本的Python敏感词屏蔽的方法,需要的朋友可以参考下
    2025-04-04

最新评论