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


Posted in Python onJuly 07, 2021

前言

所谓回文数,就是说一个数字从左边读和从右边读的结果是一模一样的,比如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 相关文章推荐
Python程序中的观察者模式结构编写示例
May 27 Python
深入解析Python的Tornado框架中内置的模板引擎
Jul 11 Python
微信跳一跳python辅助脚本(总结)
Jan 11 Python
Python数据类型之List列表实例详解
May 08 Python
python删除列表元素的三种方法(remove,pop,del)
Jul 22 Python
NumPy中的维度Axis详解
Nov 26 Python
Python文件操作函数用法实例详解
Dec 24 Python
如何使用Python发送HTML格式的邮件
Feb 11 Python
在Windows上安装和配置 Jupyter Lab 作为桌面级应用程序教程
Apr 22 Python
Python txt文件常用读写操作代码实例
Aug 03 Python
python设置中文界面实例方法
Oct 27 Python
python ansible自动化运维工具执行流程
Jun 24 Python
如何利用opencv判断两张图片是否相同详解
Python中文纠错的简单实现
Jul 07 #Python
python树莓派通过队列实现进程交互的程序分析
Python多线程 Queue 模块常见用法
Jul 04 #Python
python 中yaml文件用法大全
Jul 04 #Python
python3实现常见的排序算法(示例代码)
用Python编写简单的gRPC服务的详细过程
Jul 04 #Python
You might like
人尽可用的Windows技巧小贴士之下篇
2007/03/22 PHP
php+flash+jQuery多图片上传源码分享
2020/07/27 PHP
php使用include 和require引入文件的区别
2017/02/16 PHP
JavaScript的变量作用域深入理解
2009/10/25 Javascript
Javascript和Ajax中文乱码吐血版解决方案
2009/12/21 Javascript
使用ionic播放轮询广告的实现方法(必看)
2017/04/24 Javascript
利用forever和pm2部署node.js项目过程
2017/05/10 Javascript
前端主流框架vue学习笔记第一篇
2017/07/26 Javascript
写给vue新手们的vue渲染页面教程
2017/09/01 Javascript
浅谈redux以及react-redux简单实现
2018/08/28 Javascript
简单易扩展可控性强的Jquery转盘抽奖程序
2019/03/16 jQuery
微信小程序生成二维码的示例代码
2019/03/29 Javascript
Javascript 对象(object)合并操作实例分析
2019/07/30 Javascript
使用VUE实现在table中文字信息超过5个隐藏鼠标移到时弹窗显示全部
2019/09/16 Javascript
[05:36]DOTA2 2015国际邀请赛中国区预选赛第四日TOP10
2015/05/29 DOTA
[02:03]DOTA2亚洲邀请赛 HGT战队出场宣传片
2015/02/07 DOTA
python实现石头剪刀布程序
2021/01/20 Python
Python实现CAN报文转换工具教程
2020/05/05 Python
Python HTMLTestRunner如何下载生成报告
2020/09/04 Python
使用django自带的user做外键的方法
2020/11/30 Python
CSS3图片旋转特效(360/60/-360度)
2013/10/10 HTML / CSS
CSS3制作苹果风格键盘特效
2015/02/26 HTML / CSS
Html5上传图片 移动端、PC端通用代码
2016/06/08 HTML / CSS
五个2015 年最佳HTML5 框架
2015/11/11 HTML / CSS
详解HTML5 Canvas标签及基本使用
2020/01/10 HTML / CSS
Dr. Martens马汀博士官网:马丁靴始祖品牌
2016/10/15 全球购物
汤米巴哈马官方网站:Tommy Bahama
2017/05/13 全球购物
英国蛋糕装饰用品一站式商店:Craft Company
2019/03/18 全球购物
师范大学音乐表演专业求职信
2013/10/23 职场文书
工商管理专业应届生求职信
2013/11/04 职场文书
初中生学习生活的自我评价
2013/11/20 职场文书
学习雷锋活动总结
2014/04/29 职场文书
2014年国庆节庆祝建国65周年比赛演讲稿
2014/09/21 职场文书
原告离婚代理词
2015/05/23 职场文书
干部考核工作总结2015
2015/07/24 职场文书
标准演讲稿格式结尾应该怎么书写?
2019/07/17 职场文书