中位数和众数-第12届蓝桥杯选拔赛Python真题精选

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

中位数和众数,本题是2021年1月23日举办的第12届蓝桥杯青少组Python编程选拔赛真题,题目要求编程对输入的一组数据,分别计算出平均数、中位数和众数。

先来看看题目的要求吧

一.题目说明

提示信息:

平均数:是指在一组数据中所有数据之和再除以这组数据的个数。如:“1,2,3,4,5” 这组数的平均数为3.00。(1 + 2 + 3 + 4 + 5) / 5 = 3.00

中位数:将一组数据从大到小排序后,位置在最中间的数值。

分两种情况:当数据个数为奇数时,中位数为中间的那个数的值;当数据个数为偶数时,中位数为中间的两个数的平均值。

如:“1,3,5,7,9 ”这组数据有5个数字,中位数为5; “1,3,5,7 ”这组数据有4个数字,中位数为4。

众数:是一组数据中出现次数最多的那个数值。

如:“1,3,5,7,9 ,9”这组数据9出现的次数最多,故众数为9。

编程实现:

给定一组正整数,然后分行输出这组正整数的平均数,中位数,众数。

输入描述:

输入一组正整数并以一个英文逗号隔开

输出描述:

第一行输出平均数(保留两位小数)

第二行输出中位数(保留两位小数)

第三行输出众数(如果有多个数值出现的次数相同,则取数值最大的作为众数)

样例输入:

1,3,5,7,9,9

样例输出:

5.67

6.00

9

二.思路分析

这是一道和数学相关的计算题,考查的是平均数、中位数和众数,涉及的知识点主要包循环、列表、排序和函数等。

平均数、中位数和众数这3个数值之间并没有直接关联,因此,我们可以分开处理。

其中,平均数最简单,直接对列表数据求和,再除以列表的长度即可。

中位数是指一组数据中的中间值,即将一组数据按照从小到大(或者从大到小)的顺序排列后,处于中间位置的数,在这组数据中,有一半的数据比中位数大,有一半的数据比中位数小。

这里有两个要点:

1). 需要先对数据进行排序;

2). 数据个数是奇数还是偶数,要分情况讨论,如图:

图片

最后来分析众数,它的情况要复杂一些,众就是多的意思,从字面上就可以想到众数是出现次数最多的数字。

我们可以分两步来计算众数:

1). 统计每个数字出现的次数;

2). 找出出现次数最大的数字;

如下图所示,2出现了两次,其它数字都只出现了一次,所以众数为2:

图片

如果一组数据中出现最多次数的数据有多个,则这几个数据都为众数,众数可以有两个或两个以上,如下图所示:

图片

根据题目要求,选择最大的数字作为众数,也就是9。

为了更好地组织代码,可以定义3个函数分别来计算平均值、中位数和众数。

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

三.编程实现

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

  • 定义函数计算平均值

  • 定义函数计算中位数

  • 定义函数计算众数

  • 完成主程序

1. 定义函数计算平均值

第一步比较简单,定义函数如下:

图片

代码非常简单,直接使用Python自带的sum()函数即可,不要傻傻地循环累加了。

2. 定义函数计算中位数

根据前面的思路分析,我们定义函数如下:

图片

代码不难,说明两点:

1). 在计算idx下标的时候,需要使用整除运算;

2). 列表的下标从0开始,当idx为偶数时,中间的两项下标分别为idx和idx - 1;

3. 定义函数计算众数

根据思路分析,自定义函数如下:

图片

代码不多,强调三点:

1). 统计某一项在列表中出现的次数,直接调用count()函数即可;

2). 次数最多的数字可能会出现多个,因此这里使用列表来保存,返回的也是列表;

3). 在构造列表的时候,使用了列表推导式的编程技巧,这是一个筛选的过程,通过if语句将满足条件的列表项加入zs列表。

4. 完成主程序

有了前面的3个自定义函数,接下来就比较简单了,代码如下:

图片

代码不多,说明4点:

1). 在获取用户输入的时候,使用了列表推导式,超级好用;

2). 计算中位数之前,需要对列表进行排序,平均数和众数是否排序都不影响;

3). 平均数和中位数的结果是小数,需要保留两位小数,这里使用了f字符串;

4). 众数可能有多个,我们只需要最大的一个,使用max()函数获取即可。

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

四.总结与思考

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

  • 循环语句,主要for...in循环;

  • 输入处理,重点是多个数字的连续输入;

  • 内置函数的使用;

  • 列表的灵活运用,尤其是列表;

  • 函数的定义及使用;

  • 格式化输出;

本题难度中等,难点有两个,一是如何处理有多个众数的情况,二是如何保留两位小数。

针对第一点,我们可以这么来思考,先不管到底要哪一个,先用列表将它们保存起来,作为候选数字,然后再考虑如何从候选数字中选出最大,问题是不是一下子就变简单了。这其实还是计算思维中的分解思维,即将一个复杂问题拆分成多个简单问题。

对于小数精度的控制,通常有如下三种方式:

1). 格式化说明符

2). 格式化字符串

3). round()函数

具体的介绍,可以参考《计算分数和-第12届蓝桥杯选拔赛Python真题精选》这篇教程,一定要熟练掌握。

超平老师给你留一道思考题,你知道中位数和众数有什么作用吗,通常会用在哪些地方呢?

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

逆向入门:为CTF国赛而战day05day06

用的汉化版的 昨天做了一道题目,然后下了那个apkide改之理,就没了 今天再来一题。 我发现:ascii表要好好学。这里#号是35就被写到题目里去了。 CTF reverse 不一样的flag_ctf reverse flag.bin-CSDN博客

linux下如何查看防火墙状态

systemctl status firewalld (看防火墙进程) cat /etc/selinux/config (看是否启用linux安全模式)

最新版两款不同版SEO超级外链工具PHP源码

可根据个人感觉喜好自行任意选择不同版本使用(版V1或版V2) 请将zip文件全部解压缩即可访问! 源码全部开源,支持上传二级目录访问 #已更新增加大量高质量外链(若需要增加修改其他外链请打开txt文件) #修…

设计模式学习笔记 - 设计模式与范式 -行为型:9.迭代器模式(上):相比直接遍历集合数据,使用迭代器模式有哪些优势?

概述 上篇文章,我们学习了状态模式。状态模式是状态机的一种实现方式。它通过将事件触发的状态转移和动作执行,拆分到不同的状态类中,以此来避免状态机类中的分支判断逻辑,应对状态机类代码的复杂性。 本章,学习另外…

day02 VS Code开发单片机

VS Code开发单片机 1.1 安装 MinGW-w64 1)MinGW-w64介绍 VS Code 用于编辑 C 代码,我们还需要 C 编译器来运行 C 代码,所以安装 VS Code之前我们需要先安装 C 编译器。这里我们使用 MinGW-w64(Minimalist GNU for Windows 64-bit)。 MinGW-w64 是一个用于Windows操作系…

B站自研新一代视频编码器 BILIAV1

1. AV1 视频编码标准介绍 AV1是开放媒体联盟(AOM, Alliance for Open Media)开发的第一代开放,免版税的视频编码标准。AV1于 2018 年 3 月定稿,相同画质下,码率比 H.265/HEVC 低 20% 左右。经过 Google、N…

【打印SQL执行日志】⭐️Mybatis-Plus通过配置在控制台打印执行日志

目录 前言 一、Mybatis-Plus 开启日志的方式 二、测试 三、日志分析 章末 前言 小伙伴们大家好,相信大家平时在处理问题时都有各自的方式,最常用以及最好用的感觉还是断点调试,但是涉及到操作数据库的执行时,默认的话在控制台…

idea中输入法被锁定如何清除

今天遇到一个问题?idea中输入法被锁定了,无论怎么切换输入法,切换中英文,在idea中输出的均为英文内容,该如何解决呢?(idea官网:JetBrains: 软件开发者和团队的必备工具) …

Java常用API_正则表达式_分组——捕获分组与非捕获分组介绍与练习

在正则表达式中,从左到右第一个左括号确定为第一组,继续往右看再有左括号它表示的组数就加一。我们可以在正则表达式中使用 \\组数 的方法表示第几组,如\\1表示第一组的内容。 1.捕获分组 捕获分组就是把这一组的数据捕获出来,后…

SpringBoot和Vue2项目配置https协议

1、SpringBoot项目 ① 去你自己的云申请并下载好相关文件,SpringBoot下载的是Tomcat(默认),Vue2下载的是Nginx ② 将下载的压缩包里面的.pfx后缀文件拷贝到项目的resources目录下 ③ 编辑配置文件 (主要是框里面的内…

基于wsl的Ubuntu20.04上安装桌面环境

在子系统Ubuntu20.04上安装桌面环境 1. 更换软件源 由于Ubuntu默认的软件源在国外,有时候后可能会造成下载软件卡顿,这里我们更换为国内的阿里云源,其他国内源亦可。 双击打开Ubuntu20.04 LTS图标,在命令行中输入 # 备份原来的软…

创意解决方案:如何将作品集视频集中于一个二维码或链接中?

引言:随着面试环节的进一步数字化,展示自己的作品集成为了求职过程中的重要一环。但除了使用传统的方式,如百度网盘或直接发送多个视频链接,有没有更便捷的方法将作品集的多个视频放在一个链接中呢? 本文将介绍一种创意解决方案…

探索未知,守护已知:天通野外摄像机PS02——生物识别保护的新前沿

随着全球生态环境的日益恶化和野生动物种群数量的不断减少,生物多样性保护已经成为全球性的紧迫议题。在这一背景下,野外无人值守卫星图传监测站的应用,特别是在生物识别保护领域,展现出了巨大的潜力和价值。 创新的监测技术 野外…

使用 Citavi 和 NVivo 简化您的文献综述和研究分析

NVivo 是一款支持定性研究方法和混合研究方法的软件。它可以帮助您收集、整理和分析访谈、焦点小组讨论、问卷调查、音频等内容。NVivo(1.0版)是Windows和Mac的主要版本。遵循最新的主要版本NVivo 12(Windows和Mac)。 NVivo 强大…

类和对象中阶1⃣️-默认成员函数(构造函数 析构函数)

目录 1.类的6个默认成员函数 2.构造函数 2.1 概念 3.析构函数 3.1 概念 3.2 特性 1.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成…

Linux安装Oracle11g(无图形界面下的静默安装)

Oracle11g安装文档-Linux静默安装 环境准备安装数据库配置监听器创建数据库测试打开防火墙 环境准备 创建组和用户 [rootlocalhost ~]# groupadd oinstall #创建oinstall组 [rootlocalhost ~]# groupadd dba  #创建dba组 [rootlocalhost ~]# useradd -g oinstall -G dba -m…

Linux云计算之Linux基础3——Linux系统基础2

1、终端 终端(terminal):人和系统交互的必要设备,人机交互最后一个界面(包含独立的输入输出设备) 物理终端(console):直接接入本机器的键盘设备和显示器虚拟终端(tty):通过软件方式虚拟实现的终端。它可以…

websocket实践

文章目录 背景WebSocket API使用场景优点 实例步骤 1: 设置 WebSocket 服务器步骤 2: 创建客户端 HTML 页面步骤 3: 测试 WebSocket 通信注意事项实际操作 参考资料 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。它使得浏览器和服务器只需建立一个连接,…

金三银四面试题(十九):MySQL中的锁

在MySQL中,锁是非常重要的,特别是在多用户并发访问数据库的环境中,因此也是面试中常问的话题。 请说说数据库的锁? 关于MySQL 的锁机制,可能会问很多问题,不过这也得看面试官在这方面的知识储备。 MySQL …

07 Php学习:运算符

PHP 算术运算符 在 PHP 中,算术运算符用于执行基本的数学运算,包括加法、减法、乘法、除法、取余数,负数运算、取反和并置运算。以下是这些运算符的详细解释和示例: 加法运算符 :用于将两个数值相加。 $a 5; $b 3;…