利用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程序中进行文件读取和写入操作的教程
Apr 28 Python
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
Jul 01 Python
windows下python安装paramiko模块和pycrypto模块(简单三步)
Jul 06 Python
Pandas读写CSV文件的方法示例
Mar 27 Python
零基础使用Python读写处理Excel表格的方法
May 02 Python
Python 中list ,set,dict的大规模查找效率对比详解
Oct 11 Python
PYTHON绘制雷达图代码实例
Oct 15 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
Sep 21 Python
Python 删除List元素的三种方法remove、pop、del
Nov 16 Python
一文带你掌握Pyecharts地理数据可视化的方法
Feb 06 Python
python 利用panda 实现列联表(交叉表)
Feb 06 Python
python爬虫scrapy基本使用超详细教程
Feb 20 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
PHP return语句另类用法不止是在函数中
2014/09/17 PHP
如何把php5.3版本升级到php5.4或者php5.5
2015/07/31 PHP
Centos6.5和Centos7 php环境搭建方法
2016/05/27 PHP
php中通过eval实现字符串格式的计算公式
2017/03/18 PHP
Laravel 添加多语言提示信息的方法
2019/09/29 PHP
php实现JWT(json web token)鉴权实例详解
2019/11/05 PHP
js下弹出窗口的变通
2007/04/18 Javascript
JavaScript 直接操作本地文件的实现代码
2009/12/01 Javascript
js中split函数的使用方法说明
2013/12/26 Javascript
解决jquery插件冲突的问题
2014/01/23 Javascript
node.js中的console.trace方法使用说明
2014/12/09 Javascript
jquery点击缩略图切换视频播放特效代码分享
2015/09/15 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
2015/12/03 Javascript
jQuery+css实现的tab切换标签(兼容各浏览器)
2016/01/28 Javascript
原生js三级联动的简单实现代码
2016/06/07 Javascript
JavaScript中的this使用详解
2016/07/27 Javascript
javascript常用经典算法详解
2017/01/11 Javascript
jquery实现用户登陆界面(示例讲解)
2017/09/06 jQuery
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
2018/04/26 jQuery
微信小程序自定义扫码功能界面的实现代码
2020/07/02 Javascript
[43:18]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
python实现端口转发器的方法
2015/03/13 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
2018/01/31 Python
Python numpy数组转置与轴变换
2019/11/15 Python
自定义实现 PyQt5 下拉复选框 ComboCheckBox的完整代码
2020/03/30 Python
HTML5实现直播间评论滚动效果的代码
2020/05/27 HTML / CSS
香港钟表珠宝首饰商城:OneMallTime网摩间
2016/10/14 全球购物
匡威比利时官网:Converse Belgium
2017/04/13 全球购物
英国复古和经典球衣网站:Vintage Football Shirts
2018/10/05 全球购物
计算机个人求职信范例
2014/01/24 职场文书
大学生校园创业计划书
2014/02/08 职场文书
《圆明园的毁灭》教学反思
2014/02/28 职场文书
珍爱生命演讲稿
2014/05/10 职场文书
2015年教师节贺卡寄语
2015/03/24 职场文书
mysql的单列多值存储实例详解
2022/04/05 MySQL
零基础学java之方法的定义与调用详解
2022/04/10 Java/Android