【Python】判断一个整数是否是回文数的三种方法 您所在的位置:网站首页 python奇数偶数判断方法 【Python】判断一个整数是否是回文数的三种方法

【Python】判断一个整数是否是回文数的三种方法

2023-12-11 22:28| 来源: 网络整理| 查看: 265

方法一:逐位判断

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

回文数的判断条件:加入一个变量保存现在剩余的位数,每次取这个数的首位跟末位判断,如果相等那么去掉这个数的首位跟末位。最后如果剩余1位,即最中间那一位数,表明之前我们所有判断首位跟末位都是相等的(如果不相等那么直接判断不是回文数退出)表明这个数是回文数,退出。同理,如果判断位数为偶数,剩余的位数为0时,退出。

问题:

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

优点: 思路简单

解决:

判断位数下面程序即可

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

先将判断的x赋值给y,当x不为0时,表明现在x还有位数,位数+1,x/10减少一位,但要记住,用地板除(//)直接得到int整数,否则用/会出现浮点数(地板除//其实就类似C++中的int除法会去掉小数位,举例3//2=1,因为小数位的0.5被舍掉了)

逐位取值:

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),就会得到首位(举例23456//10000=2,小数位的0.3456由于是地板除约掉),末位比较简单,只要对10取模得到余数就是个位,a是首位,b是末位。

判断首尾相等后,先将位数-2,然后将首尾的数字都给删掉,删掉末位//10即可,删掉首位:如果是五位数,现在删掉末位后是四位数,地板与1000取模即可(举例,23456,我们首先地板除10,结果就是2345,然后我们再对1000取模2345%1000=345,刚好去掉了首位)

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

如上文,判断位数最后的值(位数最后是1或者0退出)即可

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

实现代码如下:

x=int(input("请输入一个整数:")) if xhou): 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 hou): hou = hou * 10 + x % 10 x //= 10 if x == hou or x == (hou // 10): print("是回文数。") else: print("不是回文数。") 方法三:字符串处理

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

反转可以用x[::-1](不明白的可以去搜索python列表切片)

实现代码如下

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("不是回文数。")


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有