数字处理-第10届蓝桥杯省赛Python真题精选
[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第3讲。
数字处理,本题是2019年3月24日举行的第10届蓝桥杯青少组Python编程第3题,题目要求编程将输入的一组数字进行相应的处理,包括统计数字个数、找出最小数字、排序及转成大写字母。
先来看看题目的要求吧。
一.题目说明
编程实现:
让用户在一次输入时输入 N 个数字(2 <= N <= 15,即每次输入的数字数量不同),数字之间以“,”作为分隔。然后组合显示:
1) 用户输入的数字个数;
2) 用户输入的最小的数字;
3) 将用户输入的数字按从大到小进行排列输出,数字之间以“,”作为分隔;
4) 如果用户输入的数字小于等于 26,则找到相对应的 26 个大写英文字母(1 对应“A”,26 对应“Z”),并拼接在一起打印显示,如果输入的数字在 1~26 之外则不显示相应字母。(例:程序输入 214,则显示输“[bad]”)。
输入描述:
N 个数字,2 <= N <= 15
输出描述:
输入的数字个数
输入的最小数字
输入的数字从大到小排列
输入的数字所对应的字母
样例输入:
9,12,15,22,5,21,214
样例输出:
7
5
214, 22, 21, 15, 12, 9, 5
ILOVEU[bad]
将程序命名为“lq003”。
评判标准:
-
10 分:正确输出用户输入的数字个数;
-
20 分:在 10 分标准的基础上,正确输出用户输入的最小数字;
-
40 分:在 20 分标准的基础上,正确地将用户输入的数字按从大到小进行排序输出;
-
50 分:完全符合题意,即在 40 分标准的基础上,正确完成显示数字对应字母的环节。
二.思路分析
这是一道综合性比较强的题目,考察的知识点主要是Python系统函数的灵活运用,包括字符串处理、列表运算、最值、排序等。
根据题目描述,可以将题目的任务分解成如下几个:
1). 输入处理
2). 获取列表的个数和最值
3). 列表排序
4). 数字编码
首先我们来讨论任务1-输入处理,本题输入的数据是使用逗号隔开的多个数据,这里有两个关键点:
-
如何对字符串进行分割
-
数据类型的转换
Python提供了一个字符串的分割方法-split(),用法如下:
str.split(str="", num=string.count(str))
参数说明如下:
-
str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
-
num -- 分割次数,如果设置了这个参数,则最多分割成 num+1 个子字符串。默认为 -1,即分隔所有。
其返回的结果是字符串列表,理解这一点至关重要。
尤其要注意的是,我们在终端窗口中输入的是数字,但是其类型是字符串。对于如下代码:
nums = input().split(",")
其结果是字符串列表:
['9', '12', '15', '22', '5', '21', '214']
因此,还需要进行类型转换处理,将字符串转成整型,最简单的方法莫过于使用列表推导式了,如下:
nums = [int(x) for x in input().split(',')]
对应的结果如下:
[9, 12, 15, 22, 5, 21, 214]
这才是我们要的列表,有了列表,就可以列表进行各种运算和处理了。
接下来,我们来处理任务2 - 获取列表的个数和最值,这一步非常简单,分别使用len()函数和min()函数即可。
print(len(nums))
print(min(nums))
然后是任务3 - 排序,题目要求从大到小排序,很多同学首先想到的就是sort()方法。不过这里有一个小坑,列表的sort()方法是原地排序,也就是会改变原列表。
根据题目的描述,在第4步中,处理的仍然是未排序的列表,因此,我们要避免原地排序,而sorted()函数刚好可以满足我们的需求。
sort 与 sorted 区别如下:
-
sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
-
list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
最后来看看任务4 - 数字编码,将1~26之间的数字按要求转成A ~ Z之间的字符。
对于这个需求,可以使用如下两种方案:
-
使用字典
-
借助ASCII码
方案1,就是使用字典将数字和字母的对应关系列出来,如下:
dict = {
1 : 'A',
2 : 'B',
3 : 'C',
4 : 'D',
5 : 'E',
......
}
然后通过键,就可以获取对应的大写字母了。
方案2,则是借助ASCII码,不过我们需要对ASCII码有所了解,如图:
其中大写字母A的ASCII码是65,根据题意,需要将1~26之间的数字加上64,然后使用chr()函数将数字转换成相应字符即可。
思路有了,接下来,我们就进入具体的编程实现环节。
三.编程实现
根据上面的思路分析,我们编写代码如下:
简单说明5点:
1). 将字符串列表转数字列表时,还可以使用map()函数;
2). 排序函数,默认顺序是从小到,可以使用参数reverse=True实现从大到小;
3). 如果不记得sorted()函数,也可以使用列表推导式,直接通过nums列表得到一个新的列表,但是不能直接赋值得到新列表,如下:
arr = nums [x]
arr = [x for x in nums] [√]
4). 在Python编程中,对于范围的判断,可以使用数学中的简写方式,1 <= n <= 26,当然你也可以使用 n >= 1 and n <= 26的常规写法;
5). print()函数默认会换行,可以通过end参数设置不换行。
运行程序,当输入的内容为9,12,15,22,5,21,214时,运行结果如下:
7
5
214,22,21,15,12,9,5
ILOVEU[bad]
非常完美,至此,整个程序就全部完成了。
四.总结与思考
本题是中级组编程部分第3题,分数为50分,代码在10行左右,涉及到的知识点包括:
-
输入输出处理;
-
字符串处理,包括分割和转换;
-
列表推导式的灵活运用;
-
列表相关函数,包括长度和最值;
-
列表排序,尤其要注意两种排序的区别;
题目难度中等,但是代码并不复杂,只要考生熟练掌握Python中常见的函数以及列表的相关操作,基本上就可以拿满分了。
不知道你发现了没有,我在本题中两次提到了列表推导式,这是一个非常好用的编程技巧,也是Python独有的列表运算,一定要熟练掌握,真的是太香了。
超平老师给你留一个思考题,在前面的分析中提到,不能直接通过arr = nums得到一个新的数组,然后对arr进行排序。如果这么做了,结果会怎样,为什么会出现这样的结果呢?
你有什么好的思路和方法,也非常欢迎和超平老师分享探讨。
如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄
需要源码的,可以移步至“超平的编程课”gzh。
相关文章:

数字处理-第10届蓝桥杯省赛Python真题精选
[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第3讲。 数字处理ÿ…...
Go并发编程
一、goroutine 和 通道 在Go语言中,每一个并发执行的活动成为goroutine。通道则是每一个goroutine之间传递消息的工具。 1、Goroutine 在一个Go程序中,只有一个主Goroutine来调用main函数。生成新的goroutine也十分简单,例如有一个函数&…...
Nignx及负载均衡动静分离
核心要点:部署后台项目 1.配置jdk环境 1.先将jdk的Linux版本的压缩包上传虚拟机中服务器 2.解压上传的jdk压缩包 tar -zxvf jdk.gz 3.先进入jdk的解压目录,再通过pwd查看当前解压包的路径 4.将 解压包路径 配置到 /etc/profile 5…...

HDFS架构介绍
数新网络_让每个人享受数据的价值浙江数新网络有限公司是一家开源开放、专注于云数据智能操作系统和数据价值流通的服务商。公司自主研发的DataCyber云数据智能操作系统,主要包括数据平台CyberData、人工智能平台CyberAI、数据智能引擎CyberEngine、数据安全平台Cyb…...
微信小程序提示确认框 wx.showModal
核心实现代码如下 wx.showModal({ title: 确认, content: 确定要删除吗?, success (res) { if (res.confirm) { console.log(用户点击确定) } else if (res.cancel) { console.log(用户点击取消) } } })title 是确认框的标题,content 是确认…...

如何设置OBS虚拟摄像头给钉钉视频会议使用
环境: OBS Studio 29.1.3 Win10 专业版 钉钉7.1.0 问题描述: 如何设置OBS虚拟摄像头给钉钉视频会议使用 解决方案: 1.打开OBS 底下来源这添加视频采集设备 选择OBS虚拟摄像头 2.源那再建一个图像,随便选一张图片 3.点击虚…...

SpringCloud 微服务全栈体系(十一)
第十章 RabbitMQ 三、SpringAMQP SpringAMQP 是基于 RabbitMQ 封装的一套模板,并且还利用 SpringBoot 对其实现了自动装配,使用起来非常方便。 SpringAmqp 的官方地址:https://spring.io/projects/spring-amqp SpringAMQP 提供了三个功能&…...

45基于matlab的ARIMA:AutoregressiveIntegratedMovingAverage model。
基于matlab的ARIMA:AutoregressiveIntegratedMovingAverage model。自回归差分移动平均模型(p,d,q),AR自回归模型,MA移动平均模型,时间序列模型步骤包括:1. 数据平稳性检验;2. 确定模型参数;3. …...

2010年408计网
下列选项中, 不属于网络体系结构所描述的内容是(C)A. 网络的层次B. 每层使用的协议C. 协议的内部实现细节D. 每层必须完成的功能 本题考查网络体系结构的相关概念 再来看当今世界最大的互联网,也就是因特网。它所采用的TCP/IP 4层网络体系结…...

初谈Linux-Linux环境搭建(阿里云免费服务器+xshell)
文章目录 前言Linux环境搭建结尾 前言 Linux is not unix 本篇文章小编初谈Linux并搭建Linux环境(阿里云免费服务器shell) Linux Linux是一个开源的操作系统 环境搭建 1.点击阿里云ECS免费学生服务器 2.注册后完成学生认证 3.购买云服务器…...

如何利用AppScan扫描H5页面,进行安全测试?
前期项目组接触的都是Web安全测试,今天做安全测试的时候,有一个项目刚好有H5页面,用以前那种AppScan内置浏览器的探索方式是不行的,研究了下,可以使用外部设备进行探索。 AppScan有两种手动探索方式,一种是…...
Oracle数据库中的table@xyz是什么意思?
是DBlink访问外部表的语法。xyz是其他Oracle数据库在你所登录的用户下建立的Dblink名。通过这种方式访问其他数据库中的表。 在Oracle数据库中,表名后跟着符号和一个连接字符串(xyz)是一种用法,它用于指定要访问的远程数据库。 …...

springboot常见网络相关错误及原因解析
在基于spring-boot开发过程尤其是上线后,经常出现网络相关的错误,令人难以琢磨和下手,所以就spring-boot使用过程中可能碰到的网络相关问题进行分析,结合网络转包、日志报错和前端输出,针对网络连接超时、连接被拒绝、…...
【C语言_线程pthread_互斥锁mutex_条件触发cond 之解析与示例 (开源)】.md updata:23/11/03
文章目录 线程 pthread线程 vs 进程线程退出 等待 消息传递join:等待,传参void*; exit:退出,对参数赋值void**; 互斥锁 mutex互斥锁mutex条件cond_等待wait、触发signal 控制线程执行 补充: 宏-静态初始化 互斥锁/条件 线程 pthread 线程 vs…...
mongodb如何删除数据并释放空间
mongodb删除数据后不会直接释放内存空间,是因为使用了一种称为“延迟删除”的策略。这意味着当一个文档被删除时,它仍然会占用一定的内存空间,直到这个空间被垃圾回收器(Garbage Collector)回收。 删除数据操作前建议先…...

k8s之集群调度
目录 调度 工作机制 调度过程 调度算法 优先级 指定调度节点 调度 Kubernetes 是通过 List-Watch 的机制进行每个组件的协作,保持数据同步的,每个组件之间的设计实现了解耦。 用户是通过 kubectl 根据配置文件,向 APIServer 发送命令…...

代码随想录算法训练营第四十二天丨 动态规划part05
1049.最后一块石头的重量II 思路 本题其实就是尽量让石头分成重量相同的两堆,相撞之后剩下的石头最小,这样就化解成01背包问题了。 感觉和昨天讲解的416. 分割等和子集 (opens new window)非常像了。 本题物品的重量为 stones[i],物品的价…...
[css] flex 子元素自动撑开父元素宽度
对于水平排列的情况,我们可以设置父元素的flex-direction属性为row。这样,子元素将会水平排列在一行内,并自动撑开父元素的宽度。如果子元素的宽度总和超过了父元素的宽度,则子元素会被压缩,以适应父元素的宽度。 对于…...

全新干货!一招教你迅速提升流量主收入!包你轻松月入过万
也不怕大家笑话,才哥以前收入每天才一块钱,连瓶水都买不了, 可是自从我开始接触老年粉私域后,一个搬运公众号的流量主收益两个月后就可以用“浴火重生”来形容了。 一个搬运公众号一天的流量主收益比我原创两年的个人公众号收益还…...
连接两个dataframe
concat import pandas as pd df1 pd.DataFrame({‘A’: [1, 2, 3], ‘B’: [4, 5, 6]}) df2 pd.DataFrame({‘A’: [7, 8, 9], ‘B’: [10, 11, 12]}) result pd.concat([df1, df2]) # 在行上连接 merge import pandas as pd df1 pd.DataFrame({‘key’: [‘A’, ‘B…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...

ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...