首页 > 编程语言 >python如何输出对称数

python如何输出对称数

时间:2024-08-31 18:50:29浏览次数:11  
标签:输出 数字 10 python reversed num 字符串 对称 回文

1.什么是回文数/对称数

回文数(Palindrome Number)是指一个正整数,它从左向右读和从右向左读是完全相同的。换句话说,这个数关于其中心点是对称的。例如,数字 12321 是一个回文数,因为它从左读(12321)和从右读(12321)都是相同的。

回文数可以是任何进制的数,但通常我们在讨论回文数时,指的是十进制下的回文数。不过,回文数的概念可以很容易地扩展到其他进制系统中。

在数学和计算机科学中,回文数经常作为算法和编程练习的主题,因为它们提供了一种有趣的对称性质,可以用来测试各种编程和算法技巧。

检测一个数是否是回文数的方法有很多,包括将数转换为字符串并检查其是否与其反转字符串相同,或者通过数学方法(如上面提到的)来避免字符串操作,特别是对于非常大的数,后者可能更高效,因为它避免了潜在的字符串操作开销和整数溢出问题。

需要注意的是,负数通常不被认为是回文数,因为负号破坏了数的对称性。然而,在某些情况下,如果特别指出,也可以将负数的绝对值视为回文数的一部分来进行讨论。但在大多数情况下,回文数指的是非负整数

2.怎么输出回文数

方法一:使用字符串

最直观的方法是先将数字转换为字符串,然后检查这个字符串是否与其反转后的字符串相同

def is_palindrome(num):  
    # 将数字转换为字符串  
    str_num = str(num)  
    # 检查字符串是否与其反转相等  
    return str_num == str_num[::-1]  
  
# 示例:输出1到100之间的所有对称数  
for num in range(1, 101):  
    if is_palindrome(num):  
        print(num)

方法二:数学方法(适用于非负整数)

如果不希望将数字转换为字符串,我们可以通过数学计算的方式来判断一个数字是否是回文数。具体来说,我们可以分别计算原始数字的前半部分和反转后的后半部分,然后比较它们是否相等

def is_palindrome_math(num):  
    # 处理负数和个位为0的情况(除了0本身)  
    if num < 0 or (num % 10 == 0 and num != 0):  
        return False  
      
    reversed_num = 0  
    original_num = num  
      
    while num > reversed_num:  
        reversed_num = reversed_num * 10 + num % 10  
        num //= 10  
      
    # 当数字长度为奇数时,我们可以通过num//10去除中间的数字  
    return num == reversed_num or num == reversed_num // 10  
  
# 示例:输出1到100之间的所有对称数  
for num in range(1, 101):  
    if is_palindrome_math(num):  
        print(num)

在这个方法中,我们逐位反转了原始数字的一半,并通过比较反转后的数字和原始数字(或其去除了中间位的数字)来判断是否是对称数。注意,在处理奇数位数的数字时,我们通过在比较之前去掉中间的数字来适应算法。

注意

  • 当数字非常大时,转换为字符串的方法可能会更高效,因为整数的反转操作在数值上可能会导致溢出。
  • 上述两种方法均只适用于非负整数。如果需要处理包含负数的情况,你可以根据需要调整算法逻辑(例如,仅处理绝对值,或特别处理负数作为非对称数)

标签:输出,数字,10,python,reversed,num,字符串,对称,回文
From: https://blog.csdn.net/daoliuweisong12/article/details/141720139

相关文章

  • 如何开发针对不平衡分类的成本敏感神经网络 python
    如何开发针对不平衡分类的成本敏感神经网络深度学习神经网络是一类灵活的机器学习算法,可以在各种问题上表现良好。神经网络使用误差反向传播算法进行训练,该算法涉及计算模型在训练数据集上产生的误差,并根据这些误差的比例更新模型权重。这种训练方法的局限性在于,每个类别......
  • 算法题技巧之“枚举右维护左“--套路详细讲解带例题和易懂代码(Python,C++)
    本文参考:灵茶山艾府-力扣(LeetCode)        分享丨【题单】常用数据结构(前缀和/差分/栈/队列/堆/字典树/并查集/树状数组/线段树)-力扣(LeetCode)    本文主要讲解关于”枚举右维护左“这个刷算法题的技巧,包括简单的原理讲解和两个简单的例题(之后我也会总......
  • python 基础习题7--for循环练习
    1.编写一个程序,判断输入的一个数字是否为偶数。示例输入:3返回:yes示例输入:4返回:no2.编写一个程序,找出列表中的大于50的数,并输出该数及其在列表中的索引位置。该列表可以自己写,例如:[23,78,1,56,35,60,90]输出:7815636059063.编写一个程序,统计一个字符串中字母"a"出现的次数......
  • 马铃薯叶片病害识别系统+Python+图像识别+人工智能+深度学习+卷积神经算法+计算机课设
    一、介绍马铃薯叶片病害识别系统。本项目使用Python作为主要开发语言,基于TensorFlow等深度学习框架搭建ResNet50卷积神经算法网络模型,通过对收集到的3种常见的马铃薯叶片病害数据集('早疫病','健康','晚疫病')进行训练得到一个识别精度较高的模型,然后将模型以H5格式文件形式保存......
  • Python股票接口实现查询账户,提交订单,自动交易(1)
    部分券商已经支持股票的API交易接入,大部分讲量化交易的文章都是讲用各种Python库取股票数据,和交易策略的回测,很少有讲到账户的查询和订单的提交与查询。基础介绍:其实取数据有各种方法,也都没什么门槛,有很多免费好用的第三方Python库,即时性和准确性不像券商官方的稳定可靠,实......
  • python基础三之基本数据类型
    1.数字类型及操作1.1整数类型  可正可负,没有取值范围限制pow(x,y) 计算x的y次方,想算多大算多大4种进制表示形式十进制:如:1019,8,-8二进制:由0b或0B开头,只由0,1组成,如:0b0110,-0B101010101八进制:由0O或0o开头:0O123,-0O445十六进制:又0X或0x开头:0X89,-0x9a1.2......
  • (免费源码)计算机毕业设计必看必学 SSM大学生实习就业推荐系统68986 原创定制程序 java
    SSM大学生实习就业推荐系统 摘 要信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于角度存在偏差,人们经常能够获取不同类型的信息,这也是技术最为难以攻克的课题。针对大学生实习就业推荐系统等问题,对大学生实习就业推荐系统进行研究......
  • 使用广播星历计算卫星坐标(Python)
    前言本代码为GNSS课程设计代码,仅供参考,使用的计算方法与公式均来源于王坚主编的《卫星定位原理与应用(第二版)》。本代码计算结果可以通过下载精密星历进行比照,误差在1-10m左右。实现功能:读取卫星广播星历,并将其计算为WGS-84坐标系下的坐标,每颗卫星,每15分钟输出一次。广播星历......
  • python中的编码&解码
    https://cloud.tencent.com/developer/article/2278351编码(encode):将Unicode字符串转为特定编码格式对应的字节码的过程;就是将字符串转换为字节码解码(decode):将特定编码格式的字节码转为对应的Unicode字符串的过程;就是将字节码转换为字符串正确写法只有str.encode()和bytes.decod......
  • 阿尔茨海默病症识别+图像识别Python+人工智能+深度学习+TensorFlow+机器学习+卷积神经
    一、介绍阿尔茨海默病症识别。使用Python作为主要编程语言进行开发,基于深度学习等技术使用TensorFlow搭建ResNet50卷积神经网络算法,通过对病症图片4种数据集进行训练['轻度痴呆','中度痴呆','非痴呆','非常轻微的痴呆'],最终得到一个识别精确度较高的模型。然后使用Django框架......