数位递增数-第12届蓝桥杯选拔赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第46讲。

数位递增数,本题是2020年11月21日举办的第12届蓝桥杯青少组Python编程选拔赛真题,题目要求编写程序统计10到n中数位递增数的个数。

先来看看题目的要求吧。

一.题目说明

提示信息:

一个正整数如果任何一个数位小于等于右边相邻的数位,则称为一个数位递增数。例如:

1135是一个数位递增数

1024不是一个数位递增数

编程实现:

输入一个正整数n(10 < n < 10001),输出10到n(包含10和n)中有多少个数位递增数。例如:输入15,10到15之间的数位递增数有:11、12、13、14、15。一共有5个。

输入描述:

输入一个正整数n(10 < n < 10001)

输出描述:

输出10到n中有多少个数位递增数

样例输入:

15

样例输出:

5

二.思路分析

这是一道简单的运算题,考查的知识点包括循环、数字和字符串的转换和字符的比较等。

首先要理解什么是递增数,就像生活中的排队现象,按照从小到大的顺序依次排列,如图:

图片

将这里的小朋友换成数字就可以了,如图:

图片

一旦理解了递增数,解决的思路也就有了,我们可以使用循环从数字的最高位开始,逐个和右边相邻的数位进行比较。

以数字1135为例,它的长度为4,最多需要进行3次比较,如下:

第1次:1 <= 1 成立第2次:1 <= 3 成立第3次:3 <= 5 成立

所以,1135是数位递增数。

再来看看1024,它的长度也是4,最多需要进行3次比较,如下:

第1次:1 <= 0 不成立

在比较第一次的时候,就不满足条件,后续就不需要比较了。

为了更好地组织代码,我们可以自定义一个函数,用于判断数字n是否为递增数。

不过,这里有一个关键问题,就是如何获取数字的每一位,通常有两种方式:

  • 数学方法

  • 字符串方法

数学方法是指将数字的每一位拆解出来,通常需要运用拆位算法。而字符串方法则比较简单,将数字转成字符串,然后通过下标(索引)获取每一位。

很显然,使用字符串更加简单,而且字符也是可以直接比较大小的,它们在比较大小的时候是按照ASCII码顺序来比较的,例如:

'0' 和 '1'

字符'0'~'9'的在ASCII码如下表所示:

图片

在比较的时候,是将字符'0'的ASCII码48和字符'1'的ASCII码49进行比较,很显然,48 < 49,所以'0' < '1'。

所以,在对数字字符比较大小的时候,完全可以当作数字来比较。

思路有了,接下来,我们就进入具体的编程实现环节。

三.编程实现

根据上面的思路分析,我们分两步来编写程序:

  • 自定义函数

  • 循环统计个数

1. 自定义函数

根据前面的思路分析,我们定义函数如下:

图片

代码比较简单,说明三点:

1). 这里函数命名的时候,使用了下划线,就是使用下划线将多个单词隔开,这种命名方式称作下划线命名法;

2). 循环的次数是 len(s) - 1,一定要减去1;

3). 如果不知道字符直接比较,将s[i]和s[i + 1]转成数字进行比较也是可以的,使用int()函数即可。

2. 循环统计个数

有了自定义函数,接下来就只需要循环统计了,继续编写代码如下:

图片

至此,整个程序就全部完成了,你也可以输入不同的数字来测试程序了。

四.总结与思考

本题代码在12行左右,涉及到的知识点包括:

  • 输入输出;

  • 循环编程;

  • 数字和字符串的互转;

  • 字符串的比较;

本题难度一般,关键是要理解数位递增数的概念,找到判断的思路和方法。

很多同学直接在循环中判断是否为数位递增数,认为这个函数是多余的。从结果来看,要不要函数都一样,但是从解决问题的角度来看,使用函数显然是更好的选择。

使用自定义函数的好处是能够简化代码结构,减少出错的概率。更重要的是它提供了一种分析问题、解决问题的思维方式,这就是分解思维。

将复杂的问题拆分成多个简单的问题,逐一解决这些简单问题,整个问题就迎刃而解了。不要小看这个思维,一旦掌控了这种思维,你就像开了一个外挂,不仅可以解决学习中的各种问题,还可以解决生活中和将来工作中遇到的各种问题。

超平老师给你留一个思考题,除了上面介绍的方法,你还有什么好方法来实现判断数位递增数呢?

你还有什么好的想法和创意吗,也非常欢迎和超平老师分享探讨。

如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄

需要源码的,可以移步至“超平的编程课”gzh。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/526246.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【软考】23种设计模式详解,记忆方式,并举例说明

23种设计模式详解&#xff0c;举例说明 一、创建型模式1.1、抽象工厂模式&#xff08;Abstract Factory&#xff09;1.1.1、简介1.1.2、意图与应用场景1.1.3、结构1.1.4、优缺点1.1.4、示例代码&#xff08;简化版&#xff09; 1.2、建造者模式&#xff08;Builder&#xff09;…

微信小程序-接入sse数据流并实现打字机效果( ChatGPT )

从流中获取的数据格式如下 小程序调用SSE接口 const requestTask wx.request({url: xxx, // 需要请求的接口地址enableChunked: true, // enableChunked必须为truemethod: "GET",timeout: 120000,success(res) {console.log(res.data)},fail: function (error) {//…

DNFOMP:杂乱环境中自动驾驶汽车导航的动态神经场最优运动规划器

DNFOMP&#xff1a;杂乱环境中自动驾驶汽车导航的动态神经场最优运动规划器 附赠自动驾驶学习资料和量产经验&#xff1a;链接 摘要 本文介绍了DNFOMP&#xff1a;杂乱环境中自动驾驶汽车导航的动态神经场最优运动规划器。动态变化环境中的运动规划是自动驾驶中最复杂的挑战之…

fakebook-攻防世界

题目 先目录扫描一下 dirseach 打开flag.php是空白的 访问robots.txt,访问user.php.bak <?php class UserInfo { public $name ""; public $age 0; public $blog ""; public function __construct($name, $age, $blog) { …

01 _ 分布式缘何而起:从单兵,到游击队,到集团军

这里先来聊聊什么是分布式。 与其直接用些抽象、晦涩的技术名词去给分布式下一个定义&#xff0c;还不如从理解分布式的发展驱动因素开始&#xff0c;我们一起去探寻它的本质&#xff0c;自然而然地也就清楚它的定义了。 这里将介绍分布式的起源&#xff0c;是如何从单台计算…

基于java+springboot+vue实现的健身房管理系统(文末源码+Lw)23-223

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装健身房管理系统软件来发挥其高效地信息处理的作用&#xf…

Python异常值分析

异常值分析是检验数据是否有录入错误以及含有不合常理的数据。忽视异常值的存在是十分危险的&#xff0c;不加剔除地把异常值包括进数据的计算分析过程中&#xff0c;对结果会产生不良影响&#xff1b;重视异常值的出现&#xff0c;分析其产生的原因&#xff0c;常常成为发现问…

Grafana告警(邮件)自定义模板配置

一年前给客户部署配置过grafana&#xff0c;告警配置也是用的原始的&#xff0c;客户在使用过程中只需要一些核心点信息&#xff0c;想要实现这个就需要用Grafana的自定义告警模板以及编辑邮件模板。 通知模板 模板信息的配置中查阅了相关资料&#xff0c;自己组装了一套&…

获取淘宝销量API商品详情页原数据APP接口:测试key获取(含测试链接)

淘宝/天猫获得淘宝app商品详情原数据 API 返回值说明 item_get_app-获得淘宝app商品详情原数据 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地…

静态中间继电器 HJZ-J908 AC380V 导轨安装 JOSEF约瑟

系列型号&#xff1a; HJZ-J902静态中间继电器&#xff1b;HJZ-J905静态中间继电器&#xff1b; HJZ-J907静态中间继电器&#xff1b;HJZ-J907L静态中间继电器&#xff1b; HJZ-J908静态中间继电器&#xff1b;HJZ-J909静态中间继电器&#xff1b; HJZ-J910静态中间继电器&…

以XX公司为例的Acrel1000DP分布式光伏监控系统在5.98MW分布式光伏10KV并网系统的应用

分布式光伏监控系统 目前&#xff0c;光伏电站中装设的电力二次系统主要有光伏后台监控系统、计量系统、远动通讯屏、调度数据网屏、防孤岛保护装置、电能质量在线监测装置、频率电压紧急控制装置等&#xff0c;部分光伏电站还建设有向发电集团传输数据的系统。 分布式光伏监…

基于 SSM 物业管理系统设计与实现(内附设计LW + PPT+ 源码下载)

摘 要 进入二十一世纪以来&#xff0c;计算机技术蓬勃发展&#xff0c;人们的生活发生了许多变化。很多时候人们不需要亲力亲为的做一些事情&#xff0c;通过网络即可完成以往需要花费很多时间的操作&#xff0c;这可以提升人们的生活质量。计算机技术对人们生活的改变不仅仅包…

[C++][算法基础]模拟散列表(哈希表)

维护一个集合&#xff0c;支持如下几种操作&#xff1a; I x&#xff0c;插入一个整数 x&#xff1b;Q x&#xff0c;询问整数 x 是否在集合中出现过&#xff1b; 现在要进行 N 次操作&#xff0c;对于每个询问操作输出对应的结果。 输入格式 第一行包含整数 N&#xff0c;…

JS小项目-计算器

需求&#xff1a;根据素材制作如图所示页面&#xff0c;在页面输入第一个数和第二个数&#xff0c;单击&#xff08;加&#xff09;、&#xff0d;&#xff08;减&#xff09;、&#xff0a;&#xff08;乘&#xff09;、&#xff0f;&#xff08;除&#xff09;按钮时&#xf…

动态规划刷题(算法竞赛、蓝桥杯)--区间DP

1、题目链接&#xff1a;[NOI1995] 石子合并 - 洛谷 #include <bits/stdc.h> using namespace std; const int N210; int n,a[N],s[N]; int f[N][N];//存最小值 int g[N][N];//存最大值 int main(){memset(f,0x3f,sizeof f);//求最小初始化为无穷大 memset(g,-0x3f,size…

智慧能耗预付费系统解决方案——用户侧能源计量及收费

安科瑞电气股份有限公司 祁洁 15000363176 一、方案组织架构 二、方案特点 &#xff08;1&#xff09;多样组网&#xff0c;多样设备接入&#xff0c;多样部署&#xff1b; &#xff08;2&#xff09;集团管理、项目分级、分层拓扑&#xff1b; &#xff08;3&#xff09…

ImageView显示叠加图

imageView显示叠加图&#xff1a;背景是绿色&#xff0c;中间为add图标 <ImageViewandroid:id"id/iv_add_food"android:layout_width"80dp"android:layout_height"80dp"android:layout_below"id/iv_filter"android:layout_marginTo…

C语言 03 VSCode开发

安装好 C 语言的开发环境后&#xff0c;就需要创建项目进行开发了。 使用 IDE&#xff08;集成开发环境&#xff09;进行开发了。 C 语言的开发工具很多&#xff0c;现在主流的有 Clion、Visual Studio、VSCode。 这里以 VSCode 作为演示。 创建项目 安装 VSCode。 推荐直接在…

抖音-引流私域转化模式1.0现场视频,从抖音源源不断把人加到私域,

抖音-引流私域转化模式1.0现场视频&#xff0c;从抖音源源不断把人加到私域&#xff0c;让加到私域的粉丝买单 抖音-引流私域转化模式1.0现场视频&#xff0c;从抖音源源不断把人加到私域 - 百创网-源码交易平台_网站源码_商城源码_小程序源码 课程内容&#xff1a; 01.第一…

yolov8草莓及病害检测项目开发(python开发,带有训练模型,可以重新训练,并有Pyqt5界面可视化)

本次检测系统&#xff0c;可以通过图片、视频或摄像头三种形式检测&#xff0c;检测出开花、结果、熟果、草莓叶子健康、叶子缺钙、灰叶斑病等八大类别。基于最新的YOLO-v8训练的草莓检测模型和完整的python代码以及草莓的训练数据&#xff0c;下载后即可运行&#xff0c;输出检…