
項目網站: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⏫回到頂部