数字处理-第10届蓝桥杯省赛Python真题精选

news2025/2/23 11:04:05

[导读]:超平老师的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时,运行结果如下:​​​​​​​

75214,22,21,15,12,9,5ILOVEU[bad]

非常完美,至此,整个程序就全部完成了。

四.总结与思考

本题是中级组编程部分第3题,分数为50分,代码在10行左右,涉及到的知识点包括:

  • 输入输出处理;

  • 字符串处理,包括分割和转换;

  • 列表推导式的灵活运用;

  • 列表相关函数,包括长度和最值;

  • 列表排序,尤其要注意两种排序的区别;

题目难度中等,但是代码并不复杂,只要考生熟练掌握Python中常见的函数以及列表的相关操作,基本上就可以拿满分了。

不知道你发现了没有,我在本题中两次提到了列表推导式,这是一个非常好用的编程技巧,也是Python独有的列表运算,一定要熟练掌握,真的是太香了。

超平老师给你留一个思考题,在前面的分析中提到,不能直接通过arr = nums得到一个新的数组,然后对arr进行排序。如果这么做了,结果会怎样,为什么会出现这样的结果呢?

你有什么好的思路和方法,也非常欢迎和超平老师分享探讨。

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高性能网络编程 - 关于单台服务器并发TCP连接数理论值的讨论

文章目录 概述操作系统的限制因素文件句柄限制1. 进程限制2. 全局限制 端口号范围限制 概述 单台服务器可以支持的并发TCP连接数取决于多个因素&#xff0c;包括硬件性能、操作系统限制、网络带宽和应用程序设计。以下是一些影响并发TCP连接数的因素&#xff1a; 服务器硬件性…

软件设计模式原则(二)开闭原则

继续讲解第二个重要的设计模式原则——开闭原则~ 一.定义 开闭原则&#xff0c;在面向对象编程领域中&#xff0c;规定“软件中的对象&#xff08;类&#xff0c;模块&#xff0c;函数等等&#xff09;应该对于扩展是开放的&#xff0c;但是对于修改是封闭的”&#xff0c;这意…

Golang源码分析之golang/sync之singleflight

1.1. 项目介绍 golang/sync库拓展了官方自带的sync库&#xff0c;提供了errgroup、semaphore、singleflight及syncmap四个包&#xff0c;本次分析singlefliht的源代码。 singlefliht用于解决单机协程并发调用下的重复调用问题&#xff0c;常与缓存一起使用&#xff0c;避免缓存…

Capto2024专为Mac电脑设计的屏幕录制和视频编辑软件

不得不说视频编辑功能&#xff1a;Capto提供了多种视频编辑功能&#xff0c;例如剪辑、旋转、裁剪、调整音频和视频的音量、加入水印、添加注释等&#xff0c;你能够使用Capto编辑你的视频&#xff0c;使之更加专业和生动。有目共睹的是录制完成后&#xff0c;你能够使用Capto提…

PowerShell实战:文件操作相关命令笔记

目录 1、New-Item 创建新项命令 2、Remove-Item 删除项命令 3、Rename-Item 项重命名 1、New-Item 创建新项命令 cmdlet New-Item 将创建新项并设置其值。 可创建的项类型取决于项的位置。 例如&#xff0c;在文件系统 New-Item 中创建文件和文件夹。 在注册表中&#xff0c; N…

叶片卷曲

叶片卷曲 上卷/内卷白粉病强烈阳光&温度太高虫害&#xff08;蓟马&#xff09; 下卷 叶片卷曲的原因有很多&#xff0c;很多情况无法从外表分辨&#xff0c;并且有可能多种原因混杂&#xff0c;扰乱判断 上卷/内卷 白粉病 当植株感染白粉病时&#xff0c;白粉病菌孢子附…

c语言进阶部分详解(《高质量C-C++编程》经典例题讲解及柔性数组)

上篇文章我介绍了介绍动态内存管理 的相关内容&#xff1a;c语言进阶部分详解&#xff08;详细解析动态内存管理&#xff09;-CSDN博客 各种源码大家可以去我的github主页进行查找&#xff1a;唔姆/比特学习过程2 (gitee.com) 今天便接“上回书所言”&#xff0c;来介绍《高质…

CANoe新建XML自动化Test Modules

文章目录 1.打开Test Modules2.新建Environment3.新建XML Test Modules4.新建.can文件5.打开XML Test Modules6.新建xml脚本并保存7.编译8.在.can文件写个测试用例9.修改报告格式为HTML10.运行查看报告后面介绍的文章会重复用到这部分,这里单独介绍下,后面不做重复介绍。 1.…

Envoy XDS协议学习

Envoy xds学习 资料地址 envoy官网资料连接 接口说明 xds分为增量接口和全量接口SotW&#xff1a;state of the world 即全量的数据Incremental&#xff1a; 增量的数据 具体接口 Listener: Listener Discovery Service (LDS) SotW: ListenerDiscoveryService.StreamList…

一文搞懂设计模式之工厂模式

大家好&#xff0c;我是晴天&#xff0c;本周将同大家一起学习设计模式系列的第二篇文章——工厂模式&#xff0c;我们将依次学习简单工厂模式&#xff0c;工厂方法模式和抽象工厂模式。拿好纸和笔&#xff0c;我们现在开始啦~ 前言 我们在进行软件开发的时候&#xff0c;虽然…

vector类模拟实现(c++)(学习笔记)

vector 构造函数析构函数[]push_backsize()capacity()reserve()push_back() 迭代器实现非const和const版本 pop_back()resize()insert()***重点erase()***重点再谈构造函数&#xff01;拷贝构造函数****&#xff08;重点&#xff09;运算符重载***&#xff08;重点&#xff09;…

详解RSA加密算法 | Java模拟实现RSA算法

目录 一.什么是RSA算法 二.RSA算法的算法原理 算法描述 三.RSA算法安全性 四.RSA算法的速度 五.用java实现RSA算法 一.什么是RSA算法 1976年&#xff0c;Diffie和Hellman在文章“密码学新方向&#xff08;New Direction in Cryptography&#xff09;”中首次提出了公开…

arduino - NUCLEO-H723ZG - test

文章目录 arduino - NUCLEO-H723ZG - test概述笔记物理串口软串口备注END arduino - NUCLEO-H723ZG - test 概述 准备向NUCLEO-H723ZG上移植西门子飞达控制的Arduino程序. 先确认一下知识点和效果. 笔记 物理串口 NUCLEO-H723ZG在STM32 Arduino 库中, 只提供了一个串口 Se…

快速了解推荐引擎检索技术

目录 一、推荐引擎和其检索技术 二、推荐引擎的整体架构和工作过程 &#xff08;一&#xff09;用户画像 &#xff08;二&#xff09;文章画像 &#xff08;三&#xff09;推荐算法召回 三、基于内容的召回 &#xff08;一&#xff09;召回算法 &#xff08;二&#xf…

uni-app---- 点击按钮拨打电话功能点击按钮调用高德地图进行导航的功能【安卓app端】

uniapp---- 点击按钮拨打电话功能&&点击按钮调用高德地图进行导航的功能【安卓app端】 先上效果图&#xff1a; 1. 在封装方法的文件夹下新建一个js文件&#xff0c;然后把这些功能进行封装 // 点击按钮拨打电话 export function getActionSheet(phone) {uni.showAct…

【雷达原理】雷达杂波抑制方法

目录 一、杂波及其特点 1.1 什么是杂波&#xff1f; 1.2 杂波的频谱特性 二、动目标显示(MTI)技术 2.1 对消原理 2.2 数字对消器设计 三、MATLAB仿真 3.1 对消效果验证 3.2 代码 一、杂波及其特点 1.1 什么是杂波&#xff1f; 杂波是相对目标回波而言的&#xff0c;…

【Python工具】Panoply介绍及安装步骤

Panoply介绍及安装步骤 1 Panoply介绍2 Panoply安装步骤&#xff08;Windows&#xff09;2.1 下载并安装JAVA环境2.2 下载Panoply报错&#xff1a;Error: A JNI error has occurred, please check your installation and try again. 参考 1 Panoply介绍 Panoply是一款由美国国…

【大数据】Apache NiFi 数据同步流程实践

Apache NiFi 数据同步流程实践 1.环境2.Apache NIFI 部署2.1 获取安装包2.2 部署 Apache NIFI 3.NIFI 在手&#xff0c;跟我走&#xff01;3.1 准备表结构和数据3.2 新建一个 Process Group3.3 新建一个 GenerateTableFetch 组件3.4 配置 GenerateTableFetch 组件3.5 配置 DBCP…

selenium自动化测试入门 —— 设置等待时间

time.sleep(3) 固定等待3秒 driver.implicitly_wait(10) 隐性的等待&#xff0c;对应全局 WebDriverWait( driver, timeout).until(‘有返回值的__call__()方法或函数’) 显性的等待&#xff0c;对应到元素 一、time.sleep(seconds) 固定等待 import time time.sleep(3) #…

【C++那些事儿】类与对象(1)

君兮_的个人主页 即使走的再远&#xff0c;也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们&#xff0c;这里是君兮_&#xff0c;我之前看过一套书叫做《明朝那些事儿》&#xff0c;把本来枯燥的历史讲的生动有趣。而C作为一门接近底层的语言&#xff0c;无疑是抽象且难度颇…