小学数学竖式计算题生成器
题型与难度
| 题型 | 难度规格 | 示例 | 答案格式 |
|---|---|---|---|
| 整数乘法 | 3位数 × 2位数 | 456 × 37 = |
16872 |
| 整数除法(整除) | 多位数 ÷ 1位数(除数 2-9,商 2-3位) | 2547 ÷ 3 = |
849 |
| 整数除法(除不尽) | 多位数 ÷ 1位数(除数 2-9,余数 1~除数-1) | 1557 ÷ 6 = |
余数 259 ...... 3;小数 259.5̇;分数 259又1/2 |
| 连加连减 | 3位数加减混合,最终得数 0-2000 | 756 + 231 + 497 = |
1484 |
| 混合运算 | 2-3位运算数,含两种以上运算,可带小括号(括号内为加减法),除法整除,得数 0-2000 | (429 - 282) ÷ 7 = |
21 |
| 小数运算 | 小数的加减乘除(除数 2-9 的整数),除不尽时给小数+分数两种形式 | 17.2 - 16.4 = / 2.29 ÷ 6 = |
0.8 / 0.3816̇ = 229/600 |
| 分数运算 | 真分数/假分数的加减乘除,结果约分为最简分数/带分数 | 1/2 - 1/4 = |
1/4 |
| 百分数运算 | 百分数加减、乘整数、求一个数的百分之几 | 42% + 48% = / 500 × 35% = |
90% / 175 |
无限循环小数的数学标记
遇到除不尽且为无限循环小数时,采用数学循环点标记法:在循环节的首位和末位数字正上方各加一个小圆点(单数字循环节则在该数字上方加一点),中间循环数字不加点:
- 1 ÷ 3 = 0.3̇(0.333…,循环节 3)
- 450 ÷ 7 = 450.285714̇(450.285714285714…,循环节 285714,数字 2、4 上方加点,中间不加)
- 266 ÷ 3 = 88.6̇(88.666…,循环节 6)
> 实现说明:PDF 中循环点用矢量绘制(PIL)精确落在对应数字的正上方居中位置,而非文本上标点。
整数除法(除不尽)答案三形式展示
答案页对除不尽的除法题同时给出 余数 / 小数 / 分数 三种形式,例如 1557 ÷ 6:
余数:259 ...... 3
小数:259.5̇
分数:259又1/2
小数除法答案
小数 ÷ 整数,若除不尽给 小数(循环标记)+ 分数 两种形式。
使用方法
基本用法
$env:PYTHONIOENCODING="utf-8"
python "$env:USERPROFILE\.qclaw\skills\primary-math-worksheet\scripts\generate_worksheet.py"
默认输出到桌面,文件名 小学数学竖式计算_YYYYMMDD_HHMMSS.pdf,每套默认 200 题。
参数说明
| 参数 | 默认值 | 说明 |
|---|---|---|
--count |
200 | 题目总数(默认 200 题/套) |
--mul-ratio |
0.16 | 整数乘法占比 |
--div-ratio |
0.16 | 整数除法占比(含整除和除不尽) |
--chain-ratio |
0.14 | 连加连减占比 |
--mixed-ratio |
0.14 | 整数混合运算占比 |
--decimal-ratio |
0.16 | 小数运算占比 |
--fraction-ratio |
0.14 | 分数运算占比 |
--percent-ratio |
0.10 | 百分数运算占比 |
--remainder-ratio |
0.40 | 整数除法中「除不尽」题占比 |
--title |
小学数学竖式计算练习 | 试卷标题 |
--output |
桌面/小学数学竖式计算_时间戳.pdf | 输出路径 |
默认题型比例(200 题):整数乘法 32 + 整数除法 32(含 12 题除不尽)+ 连加连减 28 + 混合运算 28 + 小数 32 + 分数 28 + 百分数 20。混合运算占比为兜底(其余比例之和剩余部分)。
示例
# 出 200 题(默认比例)
python "...\generate_worksheet.py"
# 只出小数题
python "...\generate_worksheet.py" --count 100 --mul-ratio 0 --div-ratio 0 --chain-ratio 0 --mixed-ratio 0 --fraction-ratio 0 --percent-ratio 0 --decimal-ratio 1.0
# 只要整数乘法和除法(整除)
python "...\generate_worksheet.py" --count 50 --mul-ratio 0.5 --div-ratio 0.5 --remainder-ratio 0 --chain-ratio 0 --mixed-ratio 0 --decimal-ratio 0 --fraction-ratio 0 --percent-ratio 0
# 自定义标题
python "...\generate_worksheet.py" --count 100 --title "六年级数学期末复习"
依赖
- Python 3.8+
- reportlab(
pip install reportlab) - Pillow(
pip install pillow,用于绘制循环小数标记的点)
排版规格
- A4(210mm × 297mm),页边距 2cm
- 2 列 × 5 行(每页固定 10 题)
- 每题竖式空间:约 3.65cm 高(标题 0.85cm + 竖式书写区 3.65cm,充分利用页面)
- 题号格式:
【111】(方括号包裹题号,与算式中的小数点/数字清晰区分),题目页与答案页一致 - 偶数页自动补齐:题目部分、答案部分页数自动凑成偶数(不足时补一页空白页),方便双面打印
- 字体:微软雅黑(Windows)/ STHeiti(macOS)/ NotoSansCJK(Linux)
- 最后一页参考答案(2列,完整算式+答案;除不尽显示余数/小数/分数三形式)
功能说明与迭代记录
历次需求已全部实现并固化在脚本中,汇总如下:
| 版本 | 需求 | 实现 |
|---|---|---|
| v1(初始) | 5 类整数题型(乘法/除法/连加连减/混合运算) | 整数乘法、整数除法(整除+带余数)、连加连减、含括号混合运算 |
| v2 | 新增小数、分数、百分数三类计算 | 新增 7 类题型(小数加减/乘除、分数加减乘除、百分数加减乘/求一个数的百分之几) |
| v2 | 除不尽结果以余数、小数、分数三形式展示 | 整数除法除不尽→余数/小数/分数;小数除法除不尽→小数+分数 |
| v2 | 无限循环小数按数学方法标记 | 数学循环点:循环节首末位数字正上方各加一点(PIL 矢量绘制,精确居中) |
| v2 | 每套默认 200 题 | --count 默认 200 |
| v3 | 每行竖式空间加大、充分利用页面 | 竖式书写区 3.0cm→3.65cm,每页 10 题正好填满 |
| v3 | 题目/答案页都是偶数页,方便双面打印 | 题目、答案页数自动补齐为偶数(不足补空白页) |
| v4 | 题号不用"111.",改为"【111】" | 题目页与答案页题号均用 【数字】 标识,避免与小数点混淆 |
> 题号格式说明:为避免题号 111. 与算式中的小数点混淆,统一使用方括号 【111】。