
项目网站:https://feli10.github.io/math-coding/
2022年,我的父母委托我帮助我的弟弟学习小学数学。当时他六岁,我是高中的新生。为了解决这个项目,我制定了一个计划 - 在他完成数学教科书中的每个单元后,我会设计并分配他用Python编写的1-2个编码练习,与该单元的内容紧密相关。使用这种方法结合数学和编码,我们平均每两个月完成一个学期的课程工作。在大约一年的时间里,我们完成了中国小学数学课程的三年级至5年级。
该项目库包含我们在这一年中编写的60个Python程序,其中包括22个带有图形用户界面的Python程序和38个带有命令行界面的程序。这些计划涵盖了第三至五年级中国数学教育出版社的49个单位。 math_coding_handbook.pdf文件包含每个单元的主要数学主题,以及相应程序的描述。我们还在所有程序中都包含了详细的文档和评论。
Graphical User Interface | Command Line Interface |
|---|---|
![]() | ![]() |
所有程序和学习手册都有单独的英语和中文版本。 _en目录包含英文版本,所有图形显示和以英语为单位的程序注释。 _cn目录包含中文版本,所有图形显示和中文的程序评论。

下载Math_coding_handbook.pdf(英语版本)
下载Math_coding_handbook.pdf(中文版)
通过这个项目,我和我的兄弟在实践中证明,使用编码的学习小学数学可以使学习者能够高效,有效地学习数学,同时精通编程语言。
通过该项目有效地学习小学数学,需要以下内容:
有两种使用此项目的方法:
2022年,当我的弟弟亨利(Henry)六岁时,我的父母要求我暂时负责他的数学和英语教育。当时,我比他大十岁,也是我高中的第一年。我们同意的最初目标是,在我上大学之前,我将帮助他完成小学数学,并达到英语水平,在那里他可以继续独立改善。既然我是英语中最好的家庭,那么对此没有太多不确定性,但是我该如何教他数学呢?
我九岁的时候完成了小学数学。回顾过去,我记得读过许多教科书,做很多练习问题,并进行了许多模拟测试。经过一番考虑,我意识到只有六岁的亨利需要另一种方法。根据我的学习经验,当某人不断地解决特定类型的数学问题时,通常是因为他们对基本概念缺乏深刻的了解。进行练习问题的目的应该是识别和解决这些弱点。但是,如果一个人确实会毫无意义地练习问题,那么同样的错误将一次又一次出现。这就是为什么做练习问题通常不是学习新数学主题的有效方法的原因。因此,我的目的是找到一种方法,使亨利能够在潜入广泛的问题解决之前彻底了解他需要学习的任何数学概念和技能。
结合数学和编码的主要灵感来自于作为机器学习研究项目的一部分参加高级数学课程。在参加课程的同时,我发现使用编程工具协助在大学一级学习数学非常普遍且非常有效。在学习演算,线性代数和统计数据时,使用编程来进行数学实验并解决实际问题。再加上结果的可视化,这极大地帮助了我对抽象数学概念和定理的理解。后来,我还找到了一些资源来学习中学数学,借助编程。但是,我从来没有发现小学数学类似的东西。
因此,在与亨利讨论了我的想法之后,“与编码的学习小学数学”项目诞生了。
除了与亨利(Henry)一起为期一年的项目外,我们还组织了几次“编程周末”活动,其中我带领5-10名儿童团体通过编程学习数学。由于这些事件非常成功,我相信这个项目可以使更多的孩子受益 - 使他们可以通过改进的学习成果有效地学习数学,同时为他们提供编程技能。
对于学校课程的儿童,我们希望这个项目可以帮助他们增强其数学和编程能力。我们还希望这个项目允许那些希望加速自己的数学学习的人,例如亨利。加速学习的一个好处是,对基本数学的了解可以促进早期利益的发展。例如,亨利的数学能力极大地帮助了他的音乐学习,使他的音乐兴趣和才华能够尽早发展。
我希望这个项目可以为人们提供学习数学的新方法,并为选择使用它的人带来更多机会。如果您对该项目有任何疑问或建议,请随时通过此电子邮件与我联系:[email protected]。
目录的组织与人民教育出版社的中国数学教科书相同。例如,对于目录名称g311_time ,“ G311”一开始就确定目录是否对应于3年级教科书的学期1的单元1。
标识符之后的文本指示单元的主要学习内容。 G311单元主要是关于告诉时间的,因此该单元的目录名称为g311_time 。
每个目录包含1-2个Python程序文件。程序的名称表示其内容。例如, g311_time包含两个程序: clock.py ,它显示一个功能的模拟时钟和digital_clock.py ,它显示功能功能的数字时钟。
_en目录中的math_coding_handbook.pdf文件包含3至5年级的49个单元的所有60个程序的描述页面。每个程序描述包含以下内容:

所有程序在开始时都包含详细的Docstring,并且整个过程中都有有用的评论。

学习手册和所有程序都有单独的英文和中文版本。 _en和_cn目录以相同的方式组织,但分别使用英语和中文。
代码库中的某些程序彼此包含参考。因此,我们建议在使用前下载整个代码库。
关于该程序的数学内容的一些注释:
所有数学单元均在SI(国际系统)中。
某些程序中垂直形式算术的显示基于中文教科书中所示的垂直形式。

| 单位ID | 单位名称 | 程序 |
|---|---|---|
| G311 | 讲时间 - 小时,分钟和秒 | 1。模拟时钟 2。数字时钟 |
| G312 | 2位加法和减法 | 练习2位数字和减法 |
| G313 | 测量 | 练习单位转换 |
| G314 | 垂直加法和减法 | 1。垂直添加 2。垂直减法 |
| G315 | 乘法单词问题 | 练习乘法单词问题 |
| G316 | 简短的乘法 | 简短的乘法 |
| G317 | 矩形和正方形 | 创建矩形类 |
| G318 | 了解分数 | 练习比较分数 |
| G319 | 套 | 设置操作 |
| G321 | 方向 | 练习确定方向 |
| G322 | 短师 | 短师 |
| G323 | 表 | 创建和显示表 |
| G324 | 2位数长乘法 | 长乘法1 |
| G325 | 区域 | 改善矩形类 - 计算区域并绘制矩形 |
| G326 | 年,几个月和天 | 显示日历 |
| G327 | 了解小数 | 1。小数练习1 2。小数的可视化 |
| G328 | 组合 | 三个常见的计数问题 |
| G411 | 大量工作 | 读出任何自然数字 |
| G412 | 大面积单位 | 练习区单位转换 |
| G413 | 测量角度 | 绘制时钟拨号 |
| G414 | 3位长乘积 | 长乘法2 |
| G415 | 平行四边形和梯形 | 计数梯形 |
| G416 | 长师 | 长师 |
| G417 | 条形图 | 1。使用matplotlib创建条形图 2。创建表类的子类以绘制条形图 |
| G418 | 优化 | 计数游戏 |
| G421 | 运营顺序 | 评估算术表达式 |
| G422 | 观察对象 | 三维观点 |
| G423 | 基本操作定律 | 解决24 |
| G424 | 小数的含义和特性 | 十进制实践2 |
| G425 | 三角形 | 1。绘制同步三角形 2。绘制常规多边形 |
| G426 | 小数的加法和减法 | 垂直形式的小数的加法和减法 |
| G427 | 反射对称性 | 产生反射性对称形状 |
| G428 | 平均值和分组的条形图 | 平均值和分组的条形图 |
| G429 | 鸡肉和兔子问题 | 鸡肉和兔子问题 |
| G511 | 十进制乘法 | 小数的长乘积 |
| G512 | 位置 | 1。基于位置的输入坐标 2。单击基于坐标的位置 |
| G513 | 十进制分区 | 1。小数的长划分 2。将常见分数转换为小数 |
| G514 | 可能性 | 1。随机选择权重 2。两个骰子卷的总和 |
| G515 | 简单方程 | 使用方程解决鸡肉和兔子问题 |
| G516 | 多边形区域 | 具有区域特性的多边形类 |
| G517 | 种植问题 | 种植问题 |
| G521 | 观察对象2 | 立方体V2的三种观点 |
| G522 | 因素和倍数 | 1。获得质数 2。戈德巴赫的猜想 |
| G523 | 立方体和立方体 | 1。带有单位属性的Cuboid类 2。练习量单位转换 |
| G524 | 分数的含义和特性 | 1。最大的常见分裂和最少常见的倍数 2。将小数转换为最简单的分数 |
| G525 | 旋转 | 旋转 |
| G526 | 分数的加法和减法 | 分数的加法和减法 |
| G527 | 线图 | 改进数据类以绘制多行图表 |
| G528 | 确定异常值 | 确定异常值 |
该项目中程序的目的是尽可能清晰明确地将人类解决问题的方法转化为机器语言(即Python程序)。这主要是由于以下考虑:
因此,我们将大多数计划的效率上述优先级优先考虑。但是,当遇到输入数据极大地影响运行时的方案时,学习者将被指导尝试不同的效率编程方法。
从Python的官方网站(适用于各种操作系统)下载Python安装程序。对于Windows用户,请确保在安装过程中检查“添加python.exe到路径”选项。

安装Anaconda或Miniconda(适用于各种操作系统)。康达(Conda)是一个开源软件包和环境管理系统。安装Conda还安装了Python和一些常用的模块。
使用Homebrew安装Python(适用于MacOS和Linux操作系统)。 Homebrew是一种开源软件包管理系统。如果您的系统上已经安装了Hommbrew,则可以使用以下命令安装Python:
brew install python-tk闲置(集成开发和学习环境)是Python的内置编程工具。它包括交互式解释器和代码编辑器。空闲仅具有小骨功能,因此建议使用更强大的代码编辑器(例如VS代码)。

VS代码(Visual Studio代码)

Python Interactive解释器(也称为Shell)是一个非常有用的命令行接口,您可以在其中输入任何Python表达式,结果将立即显示在屏幕上。解释器非常适合尝试小型代码段,例如测试内置数据类型或功能的使用。建议在编程时,您不仅在代码编辑器中输入代码,还可以同时打开交互式解释器。这使您可以在表达结果不确定时立即实验和验证解释器中的结果。
您可以通过以下方式访问Python Interactive解释器:
对于MacOS或Linux用户,您可以在终端中输入python以访问交互式解释器。如果系统无法识别python ,则可以尝试python3 。

Windows用户可以通过单击菜单中的“ Python”或在命令提示符窗口(CMD.EXE)中输入python来访问交互式解释器。如果系统无法识别python ,则可以尝试python3或py 。
python中的内置编程工具怠速直接在启动时直接打开交互式解释器。

您还可以通过VS代码的内置终端或交互式窗口访问交互式解释器。
模块或诸如Turtle和Tkinter之类的软件包是Python标准库的一部分,并预先安装了Python,因此不需要其他安装。
Matplotlib是一个流行的Python数据可视化库,可以使用以下方法安装:
使用Python的pip模块安装。如果系统无法识别python ,则可以在下面的命令中用python3或py (适用于Windows用户)替换python :
python -m pip install -U matplotlib如果安装了conda,则可以使用conda命令安装:
conda install matplotlibPygame是一个流行的Python游戏开发库。 G512程序“坐标游戏”使用PyGame的声音模块。您可以以类似的方式与matplotlib安装:
使用Python的pip模块安装:
python -m pip install -U pygame如果安装了conda,则可以使用conda命令安装:
conda install pygame⏫回到顶部