新闻详情

新闻详情

首页 / 资讯中心 / 详情

用 Python 画一张成绩分布图:带孩子们读懂数据里的信息

发布时间:2026/10/1 20:54:51来源:尧图网络
用 Python 画一张成绩分布图:带孩子们读懂数据里的信息
为什么要讲这个知识点孩子们学完列表、循环、条件判断之后容易停在语法会了但不知道能干什么。成绩分布图是一个很好的落点数据是孩子自己身边的一次测验的分数处理过程用到列表统计和循环输出结果又是一张看得见的图。更重要的是画完之后要回答几个问题——哪一段分数的人最多及格率是多少最高分和最低分差多少把写代码和读数据接在一起孩子才知道程序是用来回答问题的。这篇文章只用 Python 标准库和 matplotlib代码在 Python 3.8 以上版本可直接运行。完整代码先准备一份成绩数据可以让孩子换成自己班的真实分数importmatplotlib.pyplotasplt plt.rcParams[font.sans-serif][SimHei]# 正常显示中文plt.rcParams[axes.unicode_minus]False# 正常显示负号scores[88,92,75,60,45,98,81,73,66,55,90,84,79,62,100,71,68,58,95,87]# 1. 按 10 分一段统计人数groups[0-9,10-19,20-29,30-39,40-49,50-59,60-69,70-79,80-89,90-100]counts[0]*10forsinscores:ifs100:counts[9]1else:counts[s//10]1# 2. 统计基本指标totallen(scores)averagesum(scores)/total pass_count0forsinscores:ifs60:pass_count1pass_ratepass_count/total*100print(总人数,total)print(平均分%.1f%average)print(最高分,max(scores), 最低分,min(scores))print(及格率%.1f%%%pass_rate)foriinrange(10):print(groups[i],分,counts[i],人)# 3. 画分布图plt.figure(figsize(9,5))barsplt.bar(groups,counts,color#4C9AFF)forb,cinzip(bars,counts):ifc0:plt.text(b.get_x()b.get_width()/2,c0.1,str(c),hacenter,fontsize10)plt.title(一次测验的成绩分布)plt.xlabel(分数段)plt.ylabel(人数)plt.xticks(rotation45)plt.tight_layout()plt.show()代码要点拆解第一处counts [0] * 10这是先造桶再往里放东西的思路。10 个分数段就是 10 个桶初始都是 0。孩子需要理解列表乘法不是复制引用那么简单——这里元素是整数所以没问题如果元素是列表就要用别的方式。这点可以留到以后再讲现在先记住整数列表可以这样初始化。第二处counts[s // 10] 1整除是这段代码的核心。88 // 10 得到 8正好对应第 8 个桶下标从 0 开始也就是 “80-89” 这一组。这条规则对 0 到 99 分都成立唯独 100 分算出来是 10会越界。所以前面单独处理了 100 分的情况。让孩子自己想想如果不写这个 if程序会报什么错第三处柱子上标数字plt.text三个关键参数横坐标取柱子中心纵坐标取c 0.1让数字浮在柱子上方一点hacenter保证文字水平居中对齐。不加ha的话数字会偏到柱子右边。学生常见错误1. 下标和分数段对不上。有孩子写成counts[s // 10 1]结果 88 分被算进了 “90-100”。要让孩子拿几个具体数字手动推一遍比如 60、69、70 分别应该落在哪一段。2. 100 分漏掉。上面说的越界问题很多孩子第一次写必踩。这正好是一个边界值要单独想的训练机会。3. 及格率算成整数。如果写成pass_count // total * 100结果永远是 0因为整除先算出 0 再乘 100。要提醒用/而不是//或者先乘后除。4. 中文显示成方框。不设font.sans-serif就会看到一堆小方块这不是程序错了是字体没配。让孩子知道报错和显示不对是两类不同的问题。5. 数据里出现超过 100 或负数。真实数据往往不干净。可以问孩子如果有个同学考了 105 分加分题程序会怎样可以留的练习把分数段改成 5 分一段需要改哪几行增加统计不及格低于 60、良好70-89、优秀90 以上各多少人并在图上用不同颜色区分。把scores改成input()逐个输入输入 -1 结束。想一想为什么要用一个特殊值当结束标志。计算中位数把分数排序后取中间那个数。如果人数是偶数怎么办小结这张图的重点不在画得多好看而在统计口径这四个字。同样的 20 个分数按 10 分一段和按 5 分一段看到的信息不一样算不算 100 分那一档结果也不一样。让孩子养成一个习惯图表画出来之后先问自己一句这张图想说明什么它有没有骗我。这个问题比会写plt.bar重要得多。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

微小型双足鸭形机器人:强化学习从仿真到真机部署实战 2026/10/1 21:58:28

微小型双足鸭形机器人:强化学习从仿真到真机部署实战

做机器人这几年,我拆过不少双足方案,见过拿仿真当儿戏的,也见过真机一走路就趴窝的。但最近在开源社区看到一个项目让我印象很深——微小型双足鸭形机器人。它把强化学习、开源架构和仿生结构设计焊在了一起,目标很直接&#xff1…

阅读更多 →
用 OfficeCLI 打造 Aurora Softedge 风格 Morph 演示文稿:分层柔边椭圆与渐变模糊的实战指南 2026/10/1 21:58:28

用 OfficeCLI 打造 Aurora Softedge 风格 Morph 演示文稿:分层柔边椭圆与渐变模糊的实战指南

CLIAI 应用MCP 服务 【免费下载链接】OfficeCLI OfficeCLI is the first and best Office suite purpose-built for AI agents to read, edit, and automate Word, Excel, and PowerPoint files. Free, open-source, single binary, no Office installation required. 项目地址…

阅读更多 →
【架构专栏】补充2 数学与经济管理 1/2 2026/10/1 21:58:28

【架构专栏】补充2 数学与经济管理 1/2

架构设计 相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 系统架构设计 相关文章: 【架构专栏】架构考试介绍 【架构专栏】架构知识点 知识总览​ 共19章内容,主要包括: 1)1绪论、2计算…

阅读更多 →
【LeetCode 204. 计数质数】从暴力枚举到埃拉托斯特尼筛法 2026/10/1 21:58:28

【LeetCode 204. 计数质数】从暴力枚举到埃拉托斯特尼筛法

如果你也是因为超时问题而来,请跳转至【LeetCode 204. 计数质数】从暴力枚举到打表预处理 题目描述 给定整数 n ,返回所有小于非负整数 n 的质数的数量。 示例 1输入:n 10 输出:4 解释:小于 10 的质数一共有 4 个,…

阅读更多 →
RL-算法演进史01:总体框架【Value-Based:SARSA→DQN】【Policy Gradient:REINFORCE→A2C→PPO】【连续动作控制:DPG→DDPG→TD3→SAC】 2026/10/1 21:58:21

RL-算法演进史01:总体框架【Value-Based:SARSA→DQN】【Policy Gradient:REINFORCE→A2C→PPO】【连续动作控制:DPG→DDPG→TD3→SAC】

强化学习算法演进全解析:从Q-Learning、DQN、A2C、PPO到DDPG、TD3、SAC、AlphaZero与RLHF ——面向强化学习小白的强化学习算法发展史、数学原理、Mermaid结构图、经典论文与演进路线 本文目标:不是简单罗列算法,而是回答三个核心问题: 为什么会产生这个算法? 它解决了上…

阅读更多 →
【AI产品经理实战】Day 25|Python运算符入门:避开算术与逻辑的暗坑 2026/10/1 21:58:21

【AI产品经理实战】Day 25|Python运算符入门:避开算术与逻辑的暗坑

| 进度条:学习第 25 天(25/191)|当前完成度:22% |📎 今日速览:学完运算符5大类中的4类,手写8个复合赋值,搞懂短路求值和变量交换。一、今日任务(完成收获&…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉