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

2023-10-28

方法一:逐位判断

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

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

问题:

  1. 如何判断位数
  2. 如何逐位取值

优点:思路简单

解决:

判断位数下面程序即可

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("不是回文数。")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python判断一个整数是否是回文数的三种方法 的相关文章

  • 获取 .wav 文件长度或持续时间

    我正在寻找一种方法来找出 python 中音频文件 wav 的持续时间 到目前为止我已经了解了 pythonwave图书馆 mutagen pymedia pymad我无法获取 wav 文件的持续时间 Pymad给了我持续时间 但它不一致
  • 如何使用 Python 3 绕过 HTTP Error 403: Forbidden with urllib.request

    您好 不是每次都这样 但有时在尝试访问 LSE 代码时 我会收到每一个烦人的 HTTP 错误 403 禁止消息 任何人都知道我如何仅使用标准 python 模块来克服这个问题 遗憾的是没有漂亮的汤 import urllib request
  • 使用 django-rest-framework 设置对象级权限

    尝试使用 django rest framework 最干净 最规范地管理 django guardian 对象级权限 我想将对象的读取权限 module view object 分配给在执行 POST 时发出请求的用户 我的基于阶级的观点
  • 多处理中的动态池大小?

    有没有办法动态调整multiprocessing Pool尺寸 我正在编写一个简单的服务器进程 它会产生工作人员来处理新任务 使用multiprocessing Process对于这种情况可能更适合 因为工作人员的数量不应该是固定的 但我需
  • 是否可以从 Julia 调用 Python 函数并返回其结果?

    我正在使用 Python 从网络上抓取数据 我想使用这些数据在 Julia 中运行计算 是否可以在 Julia 中调用该函数并返回其结果 或者我最好直接导出到 CSV 并以这种方式加载数据 绝对地 看PyCall jl https gith
  • 在Python中从大文件中搜索单词列表

    我是新蟒蛇 我有一个单词列表和一个非常大的文件 我想删除文件中包含单词列表中的单词的行 单词列表按排序给出 并且可以在初始化期间输入 我正在努力寻找解决这个问题的最佳方法 我现在正在进行线性搜索 这花费了太多时间 有什么建议么 您可以使用i
  • 使用 Boto3 以字符串形式打开 S3 对象

    我知道使用 Boto 2 可以使用以下命令将 S3 对象作为字符串打开 get contents as string http boto readthedocs org en latest ref file html highlight c
  • 无法在 selenium 和 requests 之间传递 cookie,以便使用后者进行抓取

    我用 python 结合 selenium 编写了一个脚本来登录网站 然后从driver to requests这样我就可以继续使用requests进行进一步的活动 I used item soup select one div class
  • 创建上下文后将 jar 文件添加到 pyspark

    我正在笔记本上使用 pyspark 并且不处理 SparkSession 的创建 我需要加载一个包含一些我想在处理 rdd 时使用的函数的 jar 您可以使用 jars 轻松完成此操作 但在我的特定情况下我无法做到这一点 有没有办法访问sp
  • 在Python上获取字典的前x个元素

    我是Python的新手 所以我尝试用Python获取字典的前50个元素 我有一本字典 它按值降序排列 k 0 l 0 for k in len dict d l 1 if l lt 51 print dict 举个小例子 dict d m
  • 两个不同长度的数据帧的列之间的余弦相似度?

    我在 df1 中有文本列 在 df2 中有文本列 df2 的长度将与 df1 的长度不同 我想计算 df1 text 中每个条目与 df2 text 中每个条目的余弦相似度 并为每场比赛给出分数 输入样本 df1 mahesh suresh
  • 从 Flask 运行 NPM 构建

    我有一个 React 前端 我想在与我的 python 后端 API 相同的源上提供服务 我正在尝试使用 Flask 来实现此目的 但我遇到了 Flask 找不到我的静态文件的问题 我的前端构建是用生成的npm run build in s
  • pandas 相当于 np.where

    np where具有向量化 if else 的语义 类似于 Apache Spark 的when otherwise数据帧方法 我知道我可以使用np where on pandas Series but pandas通常定义自己的 API
  • 给定一个排序数组,就地删除重复项,使每个元素仅出现一次并返回新长度

    完整的问题 我开始在线学习 python 但对这个标记为简单的问题有疑问 给定一个排序数组 就地删除重复项 使得每个 元素只出现一次并返回新的长度 不分配 另一个数组的额外空间 您必须通过修改输入来完成此操作 数组就地 具有 O 1 额外内
  • 在骨架图像中查找线 OpenCV python

    我有以下图片 我想找到一些线来进行一些计算 平均长度等 我尝试使用HoughLinesP 但它找不到线 我能怎么做 这是我的代码 sk skeleton mask rows cols sk shape imgOut np zeros row
  • Python bug - 或者我的愚蠢 - 扫描字符串文字时 EOL

    我看不出以下两行之间有显着差异 然而第一个解析 而后者则不解析 In 5 n Axis of Awesome In 6 n Axis of Awesome File
  • AWS Lambda 不读取环境变量

    我正在编写一个 python 脚本来查询 Qualys API 中的漏洞元数据 我在 AWS 中将其作为 lambda 函数执行 我已经在控制台中设置了环境变量 但是当我执行函数时 出现以下错误 module initialization
  • 如何使用 python 定位和读取 Data Matrix 代码

    我正在尝试读取微管底部的数据矩阵条形码 我试过libdmtx http libdmtx sourceforge net 它有 python 绑定 当矩阵的点是方形时工作得相当好 但当矩阵的点是圆形时工作得更糟 如下所示 另一个复杂问题是在某
  • python从二进制文件中读取16字节长的双精度值

    我找到了蟒蛇struct unpack 读取其他程序生成的二进制数据非常方便 问题 如何阅读16 字节长双精度数出二进制文件 以下 C 代码将 1 01 写入二进制文件三次 分别使用 4 字节浮点型 8 字节双精度型和 16 字节长双精度型
  • 如何(安全)将 Python 对象发送到我的 Flask API?

    我目前正在尝试构建一个 Flask Web API 它能够在 POST 请求中接收 python 对象 我使用 Python 3 7 1 创建请求 使用 Python 2 7 运行 API 该 API 设置为在我的本地计算机上运行 我试图发

随机推荐

  • uniapp表单数据为“多级结构”,如何做校验

    开发项目的时候使用uniapp的表单 表单数据为多级结构 也就是对象里面嵌套对象 如何做校验 其实针对 多级结构数据 可以使用 动态表单校验 给单个uni forms item添加rule 给name绑定数组形式 代码如下
  • 四大坐标系转换和相机标定以及结果评估

    四大坐标系转换和相机标定以及结果评估 四大坐标系 坐标系转换 相机标定 matlab和python 标定结果评估 相机成像过程涉及坐标变换 包含世界坐标系 Xw Yw Zw 相机坐标 Xc Yc Zc 平面坐标 x y 像素坐标 u v 一
  • spring cloud config 中的application.yml 和 bootstrap.yml

    bootstrap yml 在 application yml 之前加载 bootstrap yml可以理解成系统级别的一些参数配置 这些参数一般是不会变动的 一般使用bootstrap yml是由于有远程配置需要load到本地 一般它会包
  • 基于cubemx的stm32f103指纹模块(AS608)

    寒假这段时间自己做了个指纹锁玩 在这里写一下指纹模块的用法 一 测试 新到手的AS608模块 可以在软件中测试一下功能是否正常 在使用这个配套软件的时候 注意要搭配TTL转串口使用 连接电源线和串口线四根就可以了 注意在测试的时候 要找对C
  • OSPF矢量图及不规则区域设计理论

    任何一台路由器勾画出一个区域的连接 都是通过矢量图的方式来表示 在根据树型结构算法 来计算去往非直连网络的路径信息 路由在勾画连接只包含三个参数 两类节点和节点之间的链路 节点 路由器节点 stub节点 pc所在的网络 环回口连接的网络 网
  • 规则引擎调研报告

    背景 我们公司由于业务的极具扩大 每天经过系统的金额也达到了20亿美金左右 这个时候对资金的管控就不能像以前那样分散在不同的系统 由不同的部门负责了 所以说 我们成立了风控部门 必须成立了专门的研发团队负责风控需求 要开始做风控了 我受命去
  • JS 防抖与节流

    防抖与节流 1 防抖 debounce 1 1 定义 在连续的多次触发同一事件的情况下 给定一个固定的时间间隔 假设 300 ms 该时间间隔内若存在新的触发 则清除之前的定时器并重新计时 重新计时 300 ms 表现为在短时间多次触发同一
  • OnNotify与OnChildNotify以及CStatic的DrawItem实现源代码

    OnNotify是用于子控件向父窗口发送消息用的 该消息的接收对象是父窗口 OnChildNotify是子控件向父窗口发送消息后 父窗口反射消息给子窗口用的 该消息的接收对象是子窗口 如 CDialog上有一个CStatic 在CStati
  • Could not determine which ”make“ command to run. Check the ”make“ step in the build configuration.报错

    一般情况下 工具 gt 选项 gt 构建和运行 gt 构建套件 Kit 在编译器里选择一个合适的编译器即可 but 可能由于我下载了很多次qt 文件夹位置被我搞坏了 可以检查一下项目里的构建设置 构建目录里是否在红色部分构建目录下有所示文件
  • linux查询java进程的指令,查询内存的指令,查看JVM参数

    参看所有java进程占内存 CPU使用情况 top b n 1 grep java awk print PID 1 mem 6 CPU percent 9 mem percent 10 查看java中的进程 这个指令可以查到PID和包名字
  • 系统故障-asp.net环境有误

    外播要用电子分call系统 所以他们要安装电子分call系统 去了一看 他们的系统有些问题问题现象 1 所有的toolbar控件 所有的客户端都无法显示这个控件 但只有两个客户端可以显示 经分析是asp组件有问题 所以重新安装asp net
  • 在Vue中使用QRCode生成二维码

    首先安装依赖包 npm cnpm install save qrcode 下面是qrcode vue文件 在script标签导入qrcode import QRCode from qrcode 我一般是写在mounted里面 如果需要什么条
  • 解决springboot使用logback日志出现LOG_PATH_IS_UNDEFINED文件夹的问题

    application properties 加入以下配置 logback home logging path D logs esb producer logback xml
  • SQL server 数据类型转换

    在 SQL Server 中 CONVERT 和 PARSE 函数可以用于将一个数据值从一种数据类型转换为另一种数据类型 它们与 CAST 函数一样是 SQL Server 中常见的数据类型转换函数 CONVERT 函数 CONVERT 函
  • Scala学习(三)---函数式编程

    文章目录 1 面向对象编程 2 函数式编程是什么 3 函数定义 4 函数参数的特殊用法 5 函数至简原则 6 匿名函数 6 1 匿名函数化简原则 7 高阶函数 7 1 函数可以作为值进行传递 7 2 函数可以作为参数进行传递 7 3 函数可
  • Received fatal alert:handshake_failure 异常解决方法

    目录 1 背景 2 报错信息 3 问题分析 4 解决方法 1 背景 PCI认证 要求安全传输层协议由之前的TLS v1 0 TLS v1 1升级到TLS v1 2 2 报错信息 java lang Exception 接口调用失败 at c
  • 配置Tomcat成为系统服务

    配置Tomcat成为系统服务 这里已tomcat6为例 下载Zip版Tomcat 选择 32 bit Windows zip pgp md5 下载解压文件到指定目录 如 D ProgramFiles Tomcat6 进入D ProgramF
  • Python 微信公众号文章爬取

    Python 微信公众号文章爬取 一 思路 二 接口分析 三 实现 第一步 第二步 1 请求获取对应公众号接口 取到我们需要的fakeid 2 请求获取微信公众号文章接口 取到我们需要的文章数据 四 总结 一 思路 我们通过网页版的微信公众
  • Docker搭建私有仓库

    Docker搭建私有仓库 一 私有仓库搭建 1 拉取私有仓库镜像 docker pull registry 2 启动私有仓库容器 docker run name registry p 5000 5000 registry 3 打开浏览器输入
  • Python判断一个整数是否是回文数的三种方法

    方法一 逐位判断 原理 用一个while循环 将一个数每次都取出首位和末位 判断是否相等 只要有一次不相等退出即可 回文数的判断条件 加入一个变量位数 如果这个数是奇数 位数为1时 即最中间那一位数 此时退出即可 同理 偶数 位数为0时 退