数字次数排序-第12届蓝桥杯省赛Python真题精选

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

数字次数排序,本题是2020年12月20日举办的第12届蓝桥杯青少组Python编程省赛真题,第12届一共有两场省赛,这是第一场。题目要求对输入的N个正整数,统计数字出现的次数,然后按照次数从高到低输出正整数。

先来看看题目的要求吧。

一.题目说明

编程实现:

输入N个正整数且正整数之间以一个逗号隔开,统计N个正整数中出现过的数字,以及每个数字重复出现的次数,将数字按出现次数由高到低进行排列(相同次数不分先后顺序)并输出,输出的数字之间以英文逗号隔开。

例如:输入的正整数为8,8,7,7,7,6,共出现了3个正整数为8、7、6。其中8出现了2次,7出现了3次,6出现了1次,按照次数由高到低排序后,输出的结果为7,8,6。

输入描述:

输入N个正整数且正整数之间以逗号隔开

输出描述:

输出所有出现过的数字,按照出现次数由高到低排序,数字之间以英文逗号隔开

样例输入:

8,8,7,7,7,6

样例输出:

7,8,6

二.思路分析

这是一道和集合数据类型相关的题目,考查的知识点主要包列表和字典。

Python之所以大受欢迎,是因为它提供了大量好用的数据类型和库函数。其中,和集合相关的数据类型包括列表(list)、元组(tuple)、字典(dict)和集合(set),它们统称为内置数据类型或集合数据类型。

图片

这些数据类型在Python编程中非常常用,各自有着特定的用途和特性:

列表(List):列表是Python中的一个可变序列类型,用于存储一系列有序的元素。列表的元素可以是任何类型,包括其他列表(即列表可以嵌套)。

元组(Tuple):元组与列表相似,也是一个有序的元素集合。但是,元组是不可变的,这意味着一旦创建了一个元组,就不能更改它的内容。

字典(Dictionary):字典是一个无序的键值对集合。每个键都映射到一个值,键在字典中是唯一的,字典常用于存储需要快速查找的数据。

集合(Set):集合是一个无序的不重复元素序列。集合中的元素必须是不可变的类型,如整数、浮点数、字符串或元组,集合主要用于成员关系测试和消除重复元素。

我们以题目给出的样例数据为例进行分析,输入数据为:

8,8,7,7,7,6

首先,需要统计每个数字出现的次数,既要保持数字本身,还要保存出现的次数,这不是字典最擅长的么。

统计的过程相对比较简单,结果如下:

{  8: 2,   7: 3,   6: 1}

知道了每个数字出现的次数,下一步就是排序了,对字典进行排序,按照出现次数从大到小依次排序。

如何对字典进行排序呢?

在Python中,字典本身是无序的,通常有如下3种排序方式:

  • 对字典的键(keys)进行排序;

  • 对字典的值(values)进行排序;

  • 根据值对键进行排序;

前面两种比较简单,其本质就是使用keys()方法或者values()方法获取所有的键或者值,然后使用sorted()函数排序。

第三种稍微要麻烦一点,通常需要结合lambda匿名函数,排序的典型用法如下:

sorted(dict.keys(), key=lambda x: dict[x]) 

其意思是,对字典进行排序,排序的依据是值,返回的结果是键。这里的x表示的是键,它是前面dict.keys()获取的键,而dict[x]是通过键获取值,作为排序的依据。

排序完成之后,将键以列表的形式返回,对于上面的字典,返回结果如下:

[7, 8 ,6]

怎么样,字典排序还是非常好用的吧。

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

三.编程实现

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

图片

代码不多,说明4点:

1). 在获取多个输入的数据时,使用了列表推导式的编程技巧;

2). 统计每个数字的次数的思路是循环遍历nums列表,判断数字在字典中是否存在,如果存在,则数量加1,否则将值设为1;

3). sorted()函数,默认是按照从小到大的顺序,可以使用reverse=True设置为逆序排列;

4). 最后输出时,使用join()函数将列表中的数据用逗号进行连接,但是它只能对字符串类型进行连接,因此需要先将列表中的数据转成字符串。

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

四.总结与思考

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

  • 循环语句;

  • 条件语句;

  • 输入和输出处理;

  • 列表的使用;

  • 字典的使用及排序;

本题是省赛编程第3题,难度中等,代码虽然不多,但是涉及到的知识点不少,综合性比较强。

关键是对字典的灵活应用,主要有两点,一是如何使用字典来统计每个数字出现的次数,二是如何对字典进行排序。

和其他编程语言相比,Python提供的集合数据类型非强大,它们为处理和组织数据提供了灵活和高效的工具。

因此平常在学习的时候,我们一定要多加使用,这样才能体现Python的优势嘛。

超平老师给你留一道思考题,如果不使用字典排序,你还有其它的办法吗,该如何实现呢?

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

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

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

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

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

相关文章

软硬链接与动静态库

文章目录 1.软硬链接2.动态库和静态库2.1 见一见库2.2 动静态库2.2.1 静态库2.2.2 动态库 2.3 动静态库的对比 3.真实的应用场景(ncurses库)4.库加载---可执行程序和地址空间4.1可执行程序的加载4.2 库的加载 1.软硬链接 2.动态库和静态库 2.1 见一见库 我们用过很多库。C/C的…

Pytorch官方FlashAttention速度测试

在Pytorch的2.2版本更新文档中,官方重点强调了通过实现FlashAtteneion-v2实现了对scaled_dot_product_attention约2X左右的加速。 今天抽空亲自试了下,看看加速效果是否如官方所说。测试前需要将Pytorch的版本更新到2.2及以上,下面是测试代码…

企业数字化转型路径有哪些?

企业数字化转型是一个复杂而全面的过程,涉及到企业的多个方面,包括管理、运营、生产、销售等。企业数字化转型的路径可以概括为以下几个方面: 1、开展数字化评估 企业首先需要对自身的数字化基础水平、经营管理现状以及内外部转型资源进行全…

基于汇编代码和源代码融合的漏洞检测系统

这篇文章通过结合漏洞源代码和汇编代码的特征实现了一个漏洞检测系统。实现步骤如下:(1)从源代码和汇编代码中提取代码切片;(2)通过提出的代码对齐算法对这些片断进行对齐;(3&#x…

2024 收入最高的十大编程语言预测

预测2024 收入最高的十大编程语言 在过去2023年,了解哪些编程语言能为开发者提供更高的薪水至关重要,目前全球已有超过200种编程语言可供选择.为了深入了解市场趋势和受欢迎程度,DevJobsScanner在过去一年里分析了全球超过1000万个开发职位空缺.尽管这项研究主要关注美国就业市…

LLM-01 大模型 本地部署运行 ChatGLM2-6B-INT4(6GB) 简单上手 环境配置 单机单卡多卡 2070Super8GBx2 打怪升级!

写在前面 其他显卡环境也可以!但是最少要有8GB的显存,不然很容易爆。 如果有多显卡的话,单机多卡也是很好的方案!!! 背景介绍 目前借到一台算法组的服务器,我们可以查看一下目前显卡的情况 …

【网站项目】学生选课系统小程序

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

前端开发攻略---在页面上渲染大量元素,使用defer减少白屏等待时间,优化页面响应速度

1、优化前 2、优化后 3、优化思路 1、在元素数量不变的情况下,进行一步一步的渲染,先渲染一些重要的元素或者需要用户第一时间看到的元素。 2、使用Hooks封装优化函数 4、优化代码 拥有大量元素的组件(Item):文件位置&…

Clion自动添加函数标准注释模板

一、设置步骤 点击File->Settings&#xff1b;搜索Live Templates设置项&#xff0c;选择C/C子项&#xff0c;直接拷贝以下内容&#xff1a; <template name"func" value"/*** brief * param name * param value * return * retval * bug */" desc…

kkFileView文件预览服务详解

目录 一、介绍 二、地址 三、打包部署步骤 四、三种调用方式 五、在线体验 六、源码分析-设计思路实现 七、扩展新类型 八、遇到的问题 1.混合访问问题 2.邮件解析问题 3. Ng转发配置网站域名问题; 4.Office版本问题 5.指定时区: 6. Office相关(word,ppt,excel)转…

微前端 qiankun 框架接入问题记录

背景&#xff1a;需要搭建一个平台&#xff0c;这个平台的主要功能是集成各个子系统&#xff0c;方面对系统之间的统一管理。在搭建这样一个平台时&#xff0c;前端考虑使用微前端架构方式实现&#xff0c;使用的框架是 qiankun&#xff0c;本文主要记录在 qiankun 框架使用过程…

postman汉化

一、postman历史版本下载&#xff1a;Postman 10.24.16 Download for Windows / Old Versions / FileHorse.comhttps://www.filehorse.com/download-postman/old-versions/ 二、汉化包下载&#xff1a; Releases hlmd/Postman-cn GitHubPostman汉化中文版. Contribute to h…

弹性 MapReduce(EMR)

一.产品简介 1产品概述 E腾讯云 EMR 提供基于云服务器&#xff08;CVM&#xff09;和容器服务&#xff08;TKE&#xff09;两种部署运行方式&#xff1a; 2.Agent 的安装目录 Linux 安装目录是/usr/local/qcloud/stargate和/usr/local/qcloud/monitor CoreOs 安装目录是/va…

【Redis 神秘大陆】006 灾备方案

六、Redis 灾备方案 6.1 存储方案 6.1.1 基础对比 RDB持久化AOF持久化原理周期性fork子进程生成持久化文件每次写入记录命令日志文件类型二进制dump快照文件文本appendonly日志文件触发条件默认超过300s间隔且有1s内超过1kb数据变更永久性每秒fsync一次文件位置配置文件中指…

ECharts数据大屏展示效果

ECharts数据大屏展示效果 前言1、效果预览1.2、视频效果 2、使用框架3、如何处理屏幕自适应效果4、ECharts模块、dataV大屏插件 编写与布局5、往期回顾总结&#xff1a; 前言 数据大屏需整体效果好看&#xff0c;界面缩放自适应大小&#xff0c;全屏展示铺满整个屏幕并自适应&a…

Linux 指令之文件

1.开发背景 记录 linux 下对文件操作的指令 2.开发需求 记录常用的文件操作指令 3.开发环境 linux 操作系统&#xff0c;如果不支持需要查看是否存在对应的可执行文件 4.实现步骤 4.1 查找字符串 查找指定目录下包含指定的字符串 grep -rn "Timer frequency" .…

怎么在桌面上添加待办清单 好用的桌面待办清单工具

在这个信息爆炸的时代&#xff0c;我们每个人都像是身处信息的洪流中&#xff0c;稍有不慎就可能被淹没。我常常被各种琐事包围&#xff0c;需要完成的任务数不胜数&#xff0c;而大脑的内存似乎总是有限。有时&#xff0c;我甚至会忘记一些重要的事项&#xff0c;这让我感到非…

记录一个解决win11安装天融信VPN蓝屏解决方法

当我们安装完天融信VPN产品后&#xff0c;有时候会导致电脑蓝屏&#xff01;&#xff01;&#xff01;&#xff01; 解决&#xff1a;默认是这个目录&#xff1a;C:\Windows\SysWOW64\drivers 把TopsecPF.sys 名称 改成TopsecPF.sys1就ok了

谈谈微前端

相关问题 为什么要用微前端微前端的优缺点 回答关键点 独立开发 独立运行 独立部署 自治 微前端是一种架构理念&#xff0c;它将较大的前端应用拆分为若干个可以独立交付的前端应用。这样的好处是每个应用大小及复杂度相对可控。在合理拆分应用的前提下&#xff0c;微前端能…

构建有序链表,有序链表的归并,反转链表

本次将对于构建有序链表&#xff0c;有序链表的归并&#xff0c;反转链表&#xff0c;进行一一介绍和代码分享。 首先是一些链表中的基本的函数&#xff1a; Node* creatList() {Node* headNode (Node*)malloc(sizeof(Node));assert(headNode);headNode->next NULL;retu…
最新文章