利用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实现k均值算法示例(k均值聚类算法)
Mar 16 Python
python利用MethodType绑定方法到类示例代码
Aug 27 Python
python使用Tkinter实现在线音乐播放器
Jan 30 Python
儿童编程python入门
May 08 Python
查看Django和flask版本的方法
May 14 Python
python矩阵/字典实现最短路径算法
Jan 17 Python
python的set处理二维数组转一维数组的方法示例
May 31 Python
利用python求积分的实例
Jul 03 Python
浅谈tensorflow之内存暴涨问题
Feb 05 Python
python中resample函数实现重采样和降采样代码
Feb 25 Python
python 星号(*)的多种用途
Sep 21 Python
Python+Xlwings 删除Excel的行和列
Dec 19 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循环遍历数组的3种方法list()、each()和while总结
2014/11/19 PHP
php短址转换实现方法
2015/02/25 PHP
编写PHP脚本过滤用户上传的图片
2015/07/03 PHP
PHP+JavaScript实现无刷新上传图片
2017/02/21 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
PHP标准库(PHP SPL)详解
2019/03/16 PHP
php和C#的yield迭代器实现方法对比分析
2019/07/17 PHP
JavaScript中函数声明优先于变量声明的实例分析
2012/03/01 Javascript
javascript变量作用域使用中常见错误总结
2013/03/26 Javascript
jquery属性选择器not has怎么写 行悬停高亮显示
2013/11/13 Javascript
js实现精美的图片跟随鼠标效果实例
2015/05/16 Javascript
jQuery实现图片左右滚动特效
2020/04/20 Javascript
基于HTML+CSS,jQuery编写的简易计算器后续(添加了键盘监听)
2016/01/05 Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
2016/12/01 Javascript
详解vue-cli 本地开发mock数据使用方法
2018/05/29 Javascript
js/jQuery实现全选效果
2019/06/17 jQuery
过滤器vue.filters的使用方法实现
2019/09/18 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
2019/11/06 Javascript
JS实现分页导航效果
2020/02/19 Javascript
js实现网页随机验证码
2020/10/19 Javascript
python使用wxPython打开并播放wav文件的方法
2015/04/24 Python
Python实现的Excel文件读写类
2015/07/30 Python
python机器学习库常用汇总
2017/11/15 Python
Python中的Django基本命令实例详解
2018/07/15 Python
python实现控制COM口的示例
2019/07/03 Python
Python英文文章词频统计(14份剑桥真题词频统计)
2019/10/13 Python
利用css3径向渐变做一张优惠券的示例
2018/03/22 HTML / CSS
CSS3实现文本垂直排列的方法
2018/07/10 HTML / CSS
丝芙兰法国官网:SEPHORA法国
2016/09/01 全球购物
美国儿童玩具、装扮和玩偶商店:Magic Cabin
2018/09/02 全球购物
Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别?
2012/06/05 面试题
旅游管理实习自我鉴定
2013/09/29 职场文书
因身体原因离职的辞职信范文
2015/05/12 职场文书
2015年基层党建工作总结
2015/05/14 职场文书
《我们的民族小学》教学反思
2016/02/19 职场文书
Python使用pyecharts控件绘制图表
2022/06/05 Python