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

news/2024/11/24 11:46:28/

[导读]:超平老师的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.ppmy.cn/news/1196926.html

相关文章

线性代数 第六章 二次型

一、矩阵表示 称为二次型的秩。只含有变量的平方项&#xff0c;所有混合项系数全是零&#xff0c;称为标准形&#xff1b;平方项的系数为1、-1或0&#xff0c;称为规范形。 二次型的标准形不唯一&#xff0c;可以用不用的坐标变换化二次型为标准形&#xff1b;二次型的规范形唯…

小程序如何设置用户同意服务协议并上传头像和昵称

为了保护用户权益和提供更好的用户体验&#xff0c;设置一些必填项和必读协议是非常必要的。首先&#xff0c;用户必须阅读服务协议。服务协议是明确规定用户和商家之间权益和义务的文件。通过要求用户在下单前必须同意协议&#xff0c;可以确保用户在使用服务之前了解并同意相…

6 MySQL常用的数据类型

1、整型 -- TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT 分别使用 8, 16, 24, 32, 64 位存储空间&#xff0c;一般情况下越小的列越好;2、浮点数 -- 1.FLOAT 和 DOUBLE 为浮点类型&#xff0c;DECIMAL 为高精度小数类型。CPU 原生支持浮点运算&#xff0c;但是不支持 DECIMAl…

服务器有哪些用途呢

服务器可以用于许多行业&#xff0c;包括但不限于以下几个领域&#xff1a; 企业&#xff1a;服务器可以用于企业的数据存储、应用程序和网站托管、电子邮件和协作工具、数据库管理等。 金融&#xff1a;服务器可用于高频交易、投资组合优化、风险管理和分析。 零售和电子商务…

深度学习_9_图片分类数据集

散装代码&#xff1a; import matplotlib.pyplot as plt import torch import torchvision from torch.utils import data from torchvision import transforms from d2l import torch as d2ld2l.use_svg_display()# 通过ToTensor实例将图像数据从PIL类型变换成32位浮点数格式…

Go 方法集合与选择receiver类型

Go 方法集合与选择receiver类型 文章目录 Go 方法集合与选择receiver类型一、receiver 参数类型对 Go 方法的影响二、选择 receiver 参数类型原则2.1 选择 receiver 参数类型的第一个原则2.2 选择 receiver 参数类型的第二个原则 三、方法集合&#xff08;Method Set&#xff0…

Android startActivity流程

1.常规调用 startActivity(new Intent(this,MainActivity.class)); 进入Activity的startActivity方法 /*** Same as {link #startActivity(Intent, Bundle)} with no options* specified.** param intent The intent to start.** throws android.content.ActivityNotFoundExc…

【Proteus仿真】【51单片机】数控稳压可调电源设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器&#xff0c;使用动态数码管、按键、PCF8591 AD/DAC、LM358放大电路模块等。 主要功能&#xff1a; 系统运行后&#xff0c;系统默认输出直流5V&#xff0c;数码管…