平方回文数-第13届蓝桥杯选拔赛Python真题精选

导读\]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python**蓝桥杯真题解析100讲》,**这是解读系列的第73讲。 **平方回文数,**本题是2021年11月27日举办的第13届蓝桥杯青少组Python编程选拔赛真题编程部分第4题。题目要求编程输出100到M之间的平方回文数的个数。 先来看看题目的要求吧。 ### 一.题目说明 **编程实现:** 给定一个正整数M(100 \< M \< 2000),输出100到M之间(包含M)的平方回文数的个数。 例如:M为150,则在100到150之间的平方回文数有1个,为121,输出1。 **输入描述:** 输入一个正整数M **输出描述:** 输出100到M之间(包含M)的平方回文数的个数 **样例输入:** 150 **样例输出:** 1 ### 二.思路分享 这是一道经典的数论题,涉及的知识点包括回文数,循环、列表、递归算法和动态规划等。 很明显,这是典型的枚举算法,将100到M之间所有的数字挨个进行判断即可。所以这里的重点是如何判断给定数字是平方回文数。 这里有两个概念,一个是回文数,一个是平方数。 关于回文数的判断,在之前的蓝桥真题中出现过多次,实现的方法也比较多,具体可以参考《[输出回文数-第11届蓝桥杯选拔赛Python真题精选](http://mp.weixin.qq.com/s?__biz=Mzg5NDc5MTE4MA==&mid=2247525198&idx=1&sn=bfabfcc30e689a54469ebdb70b7c0470&chksm=c018182df76f913b88af6451b6538af51db98adb0135a215d4a6780f744675ea2dbabc8f1782&scene=21#wechat_redirect "输出回文数-第11届蓝桥杯选拔赛Python真题精选")》这篇文章。 对于平方数的判断,最常见的就是使用数学方法,如果一个数n是平方数,那么它的平方根一定是一个整数,比如: 100的平方根是10121的平方根是11144的平方根是12 因此我们可以先计算数出n的平方根并转成整数m,再判断m \* m是否等于n,如果相等,说明n为平方数。 为了简化代码,我们可以自定义两个函数分别用于判断,然后在循环中调用函数进行判断并统计平方回文数的个数。 思路有了,接下来,我们就进入具体的编程实现环节。 ### 三.编程实现 根据上面的思路分析,我们分3步来编写程序: * 判断回文数 * 判断平方数 * 统计平方回文数 **1. 判断回文数** 在Python编程中,最简单的方法就是使用切片运算逆序字符串,再判断原字符串和逆序字符串是否相等。 定义函数如下: ![图片](https://file.jishuzhan.net/article/1795658523988725761/75f7d08af2f915716372db4b3238ba8c.webp) 代码非常简单,需要注意的是,n是整数,需要先转成字符串再进行处理。 **2. 判断平方数** 根据前面的思路分析,自定义函数如下: ![图片](https://file.jishuzhan.net/article/1795658523988725761/38b34424f1413671dfe51a89c2368426.webp) 代码非常简单,说明两点: 1). 在Python中,\*\*是幂运算,可以使用 \*\*0.5来计算算术平方根,得到的结果是浮点数,使用int()函数将其转成整型; 2). 在计算平方根的时候,也可以使用math模块中的sqrt()函数,效果一样,但需要引入math模块。 **3. 统计平方回文数** 有了上面定义的两个函数,接下来只需要使用循环挨个判断并统计即可,代码如下: ![图片](https://file.jishuzhan.net/article/1795658523988725761/45dae5ba45e7c61f710f899786975d7f.webp) 代码比较简单,注意一个细节,就是循环的起点和终点,根据题目的说明和样例数据,不包括100,但是包括M。 至此,整个程序就全部完成了,你可以输入不同的数字来测试效果啦。 ### 四.总结与思考 本题代码在12行左右,涉及到的知识点包括: * 循环语句; * 字符串处理,重点是切片运算; * 幂运算的应用; * 自定义函数; 本题代码不多,难度一般,关键点有两个,一是如何判断回文数,二是如何判断平方数。 回文数是编程中的经典问题,判断的方法也比较多,在Python编程中,最简单的就是使用字符串逆序方法,尤其是切片运算,真的是太好用了,一定要熟练掌握。 和其他语言不同的是,Python提供了一个强大的幂运算符\*\*,它用于计算一个数的幂,即底数的指数次方。 例如,𝑎𝑏表示𝑎的𝑏次幂,可以直接使用 a \*\* b 来表示,它不仅可以用于计算平方、立方,还可以计算平方根、立方根等,非常强大。 你还有什么好的想法和创意吗,也非常欢迎和超平老师分享探讨。 如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄 需要源码的,可以移步至"超平的编程课"gzh。

相关推荐
databook1 小时前
Manim实现闪光轨迹特效
后端·python·动效
Juchecar2 小时前
解惑:NumPy 中 ndarray.ndim 到底是什么?
python
用户8356290780512 小时前
Python 删除 Excel 工作表中的空白行列
后端·python
Json_2 小时前
使用python-fastApi框架开发一个学校宿舍管理系统-前后端分离项目
后端·python·fastapi
数据智能老司机9 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机10 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机10 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机10 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i10 小时前
drf初步梳理
python·django
每日AI新事件10 小时前
python的异步函数
python