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

news2024/12/30 2:29:35

[导读]:超平老师的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.coloradmin.cn/o/1602053.html

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

相关文章

Oracle 11g完全卸载教程(Windows)

文章目录 一、停止Oracle服务二、卸载Oracle1、卸载Oracle产品2、删除注册表3、删除环境变量以及其余文件 一、停止Oracle服务 进入服务 找到服务中的Oracle服务并且停止 全部停止运行成功 二、卸载Oracle 1、卸载Oracle产品 点击开始菜单找到Oracle,然后点击…

【数据结构】习题之消失的数字和轮转数组

👑个人主页:啊Q闻 🎇收录专栏:《数据结构》 🎉前路漫漫亦灿灿 前言 消失的数字这道题目我会和大家分享三种思路。 还有一道题目是轮转数组,,也会分享三种思路,大…

P1278 单词游戏 简单搜索+玄学优化

单词游戏 传送门 题目描述 Io 和 Ao 在玩一个单词游戏。 他们轮流说出一个仅包含元音字母的单词,并且后一个单词的第一个字母必须与前一个单词的最后一个字母一致。 游戏可以从任何一个单词开始。 任何单词禁止说两遍,游戏中只能使用给定词典中含有…

智慧电网数据可视化运维云平台解决方案

智慧电力概述 智慧电力是通过采用先进的大数据、云计算、物联网、边缘计算等技术,实现生产信息与管理信息的智慧,实现人、技术、经营目标和管理方法的集成,是企业管理思想的一个新突破。智慧电厂建设具备智能化、一体化、可观测、可互动、自…

【新知实验室 - TRTC 实践】音视频互动 Demo、即时通信 IM 服务搭建

一、TRTC 初识 TRTC 是什么 TRTC(Tencent RTC)腾讯实时音视频,源自于 QQ 音视频团队,是基于 QQ 音视频多年来的音视频技术积累,位于腾讯云的 RTC 云服务。TRTC 支持腾讯会议、企业微信直播、微信视频号、腾讯云课堂、…

虚拟机vm桥接模式linux(centos,ubuntu)联网

台式机网线 查看宿主机网络 编辑虚拟机—>虚拟网络编辑器–>更改设置 选择,确定 进入linux系统 输入ip addr找到自己的网卡 我的是eno16777736 centos: 编辑 HWADDR"00:0C:29:54:CE:B8" TYPE"Ethernet" BOOTPROTO"…

Python处理海量大数据库之fugue使用详解

概要 在大数据时代,处理海量数据是一项重要的任务。Python作为一种流行的编程语言,有许多优秀的库和工具可以帮助开发者处理大规模数据。其中,Fugue库是一个强大的工具,可以帮助开发者构建分布式数据处理流水线。本文将介绍Fugue库的安装方法、特性、基本功能、高级功能、…

Elasticsearch下载安装 以及Reindex(数据迁移)

部署Elasticsearch集群 这里介绍使用的是Elasticsearch 7.6.1的版本,配置两台服务器,一台部署主节点,一台部署两个从节点。 下载地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.16.2-linux-x86_64…

服务器数据恢复—ext3文件系统下raid5数据恢复案例

服务器数据恢复环境&故障情况: 某企业光纤存储上有一组由16块硬盘组建的raid5阵列。管理员发现该光纤存储上的卷无法挂载,经过检查发现raid5阵列中有2块硬盘离线,于是联系我们数据恢复中心要求数据恢复工程师到现场恢复服务器存储上的数据…

PyQt5 快速入门

PyQt5 简介和开发环境搭建 简介 PyQt是一个GUI小部件工具包。 它是Qt的Python接口, Qt是最强大,最受欢迎的跨平台GUI库之一。 PyQt由RiverBank Computing Ltd.开发。最新版本的PyQt可从其官方网站下载 - riverbankcomputing.com PyQt API是一组包含大…

每天学点儿Python(6) -- 列表和枚举

列表是Python中内置的可变序列,类使用C/C中的数组,使用 [ ] 定义列表,列表中的元素与元素之间用英文逗号( , )分隔, 但是Python中列表可以存储任意类型的数据,且可以混存(即类型可以…

2024能源动力、机械自动化与航天航空技术国际学术会议(ICEPMAT2024)

2024能源动力、机械自动化与航天航空技术国际学术会议(ICEPMAT2024) 会议简介 能源动力、机械自动化和航空航天技术国际学术会议(ICEPMAT2024)将于2024年在北京举行。会议将探讨能源动力、机械自动化、航空航天技术领域的新研究热点、核心技术和发展趋…

软件行业中的蓝海领域有哪些?

什么是蓝海? 蓝海,指的是未知的市场空间。这个概念相对于“红海”而言,红海则是指已知的市场空间。 企业要启动和保持获利性增长,就必须超越产业竞争,开创全新市场,这其中包括两块:一块是突破…

2024五一杯数学建模C题思路分析

文章目录 1 赛题思路2 比赛日期和时间3 组织机构4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间:2024…

【YOLOv8改进[损失函数]】使用结合InnerIoU和Focaler的各种损失函数助力YOLOv8更优秀

目录 一 回归损失函数(Bounding Box Regression Loss) 1 Inner-IoU 2 Focaler-IoU:更聚焦的IoU损失 二 改进YOLOv8的损失函数 1 总体修改 ① ultralytics/utils/metrics.py文件 ② ultralytics/utils/loss.py文件 ③ ultralytics/uti…

Vue项目管理器创建项目

黑马程序员JavaWeb开发教程 文章目录 1、创建新项目2、详情3、预设4、功能5、配置6、是否保存为预设模板7、正在创建项目8、创建完成 1、创建新项目 2、详情 3、预设 选择手动,点击下一步 4、功能 只需要额外选择一项–Router 即可,其余的保持默认&a…

C语言【指针】

1. 基本语法 1.1 指针变量的定义和使用(重点) 指针是一种数据类型,指针变量指向谁 就把谁的地址赋值给指针变量 1.2 通过指针间接修改变量的值 指针变量指向谁 就把谁的地址赋值给指针变量 可以通过 *指针变量 间接修改变量的值 1.3 const修饰的指针变量 语法…

TR转发路由器上手实测-助你轻松搭建企业网

TR转发路由器上手实测-助你轻松搭建企业网 基础概念实测路由图准备资源网络规划杭州地域北京地域 云服务器ECS云企业网免费试用TR创建云企业网创建TR转发路由器创建TR同地域连接创建TR跨地域连接 网络连通性测试释放资源释放云服务器ECS释放TR 体验感受 在进行TR转发路由器上手…

POST 为什么会发送两次请求?

本文目录 同源策略 什么是同源策略 CORS 简单请求 预检请求 附带身份凭证的请求与通配符 完整的请求流程图 总结 前言 最近博主在字节面试中遇到这样一个面试题,这个问题也是前端面试的高频问题,因为在前端开发的日常开发中我们总是会与post请求…

mysql搭建主从

mysql搭建主从: 1:拉取mysql镜像 docker pull mysql2:创建主从对应目录 3:建立一个简易的mysql docker run -it --name mytest -e MYSQL_ROOT_PASSWORD123 -d mysql4:进入这个简易的mysql;从中获取my.cnf文件 docker exec -it mytest bash5:从容器中将my.cnf拷贝到 /3306/c…