前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >数学算术计算自动生成器

数学算术计算自动生成器

作者头像
用户1278550
发布于 2023-11-01 12:17:08
发布于 2023-11-01 12:17:08
34100
代码可运行
举报
文章被收录于专栏:idbaidba
运行总次数:0
代码可运行

前言

家里有小孩已经上大班,明年入学小学一年级,现在开始加减法的数学训练,于是乎我在网上查看了很多幼小衔接的数学题,都是随机生成的 计算公式,比如 《每日30题》 ,《一日一练》 等等。

想着利用 python的 random 随机函数功能随机生成指定数据量的题目,当做日常练习题。(我儿子长大看到这篇文章 ,会不会举报我 )

实现

基本需求:

  1. 两数之算术运算结果小于40,当然也可以小于50 ,可以指定。
  2. 生成的算术公式格式化存储到 pdf ,方便打印。
  3. 题目太密集不好,不方便小孩眼睛观察题目,当然不能太稀疏,容易浪费纸张。

代码实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
=================================================
@Author :yangyidba
@Date   :2023/10/31 16:54
@Desc   :随机生成 指定number 个加减法的算术题
==================================================
"""
import random
from fpdf import FPDF


class PDF(FPDF):
    def header(self):
        self.set_font('Arial', 'B', 12)
        self.cell(0, 10, 'Mathematics Training', 0, 1, 'C')

    def footer(self):
        self.set_y(-15)
        self.set_font('Arial', 'I', 8)
        self.cell(0, 10, f'Page {self.page_no()}', 0, 0, 'C')


def generate_math_questions(questions_number=100):
    """
    :param questions_number: 题目数量
     默认生成100道题,因为幼小衔接没有接触到 负数的概念,
     故加上 判断 num1 < num2 的判断条件,避免生成负数的题目
    """
    questions = []
    for i in range(questions_number):
        num1 = random.randint(1, 19)
        num2 = random.randint(1, 19)
        if num1 < num2:
            question = f'{num1} + {num2} ='
        else:
            operator = random.choice(['+', '-'])
            question = f'{num1} {operator} {num2} ='
        questions.append(question)
    return questions


def format_questions_to_pdf(questions):
    pdf = PDF()
    pdf.add_page()
    pdf.set_font('Arial', '', 12)

    row = 0
    col = 0
    for i, question in enumerate(questions):
        #print(i)
        if i % 3 == 0 and i != 0:
            row += 1
            col = 0
        pdf.cell(65, 10, question, border=True)
        col += 1
        if col == 3:
            col = 0
            pdf.ln(10)

    filename = 'math_questions.pdf'
    pdf.output(filename)


if __name__ == '__main__':
    questions = generate_math_questions(75)
    format_questions_to_pdf(questions)
    print('0-19 之间的随机加减法已经生成到文件 math_questions.pdf.')


生成的结果如下:

然后就可以连接打印机打印了。。

总结

其他家里有打印机的朋友,可以直接复制代码,自己生成在家里制作习题集。(需要安装 fpdf 模块)

P.S 希望 小朋友能玩的开心 ^_^

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-10-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 yangyidba 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
同款老父亲,Python 随机小学生数学训练题生成源码
一个比较有意思的 Python 入门应用,作为同款老父亲,你一定不要错过,如果你还不是老父亲,请略过,来自于吾爱破解的老父亲的 Python 工具玩具应用,也是为了孩子超碎了心哈哈哈哈!
二爷
2023/09/02
2660
同款老父亲,Python 随机小学生数学训练题生成源码
【python】Fraction类详解及生成分数四则运算“试卷”
  使用整数作为分子和分母创建一个分数。在这里,Fraction(16, -10)创建了一个分数,分子为16,分母为-10。由于分母为负数,Fraction对象会自动将其转换为正数,结果为Fraction(-8, 5)。
Qomolangma
2024/07/30
2160
【python】Fraction类详解及生成分数四则运算“试卷”
Python实战-游戏(四则运算小游戏)
编程世界既神秘又充满乐趣,而今天,我们又将一起踏上学习编程的奇妙旅程,今天我们将用python通过编写简单而有趣的四则运算游戏,探索代码背后的魔法力量。无论你是完全的初学者还是有一定经验的编程爱好者,这个项目都将为你打开编程的大门,让你体验到编程的乐趣与成就感。
一个风轻云淡
2024/03/22
2790
Python实战-游戏(常识判断小游戏)
编程世界既神秘又充满乐趣,而今天,我们又将一起踏上学习编程的奇妙旅程,今天我们将用python通过编写简单而有趣的常识判断小游戏,探索代码背后的魔法力量。无论你是完全的初学者还是有一定经验的编程爱好者,这个项目都将为你打开编程的大门,让你体验到编程的乐趣与成就感。
一个风轻云淡
2024/03/22
2300
ChatGPT与人工智能
1、微软新版Bing搜索引擎集成ChatGPT,访问地址:https://www.bing.com/new
张果
2023/03/01
5.1K0
ChatGPT与人工智能
如何使用LangChain和OpenAI总结大型文档
大型语言模型让许多任务变得更加容易,例如制作聊天机器人、语言翻译、文本总结等。我们曾经编写模型来进行总结,然后总是存在性能问题。现在,我们可以使用大型语言模型 (LLM) 轻松地完成此操作。例如,最先进 (SOTA) 的 LLM 已经可以在其上下文窗口中处理整本书。但在总结非常大的文档时仍然存在一些限制。
云云众生s
2024/04/24
9090
用Python出了3000道数学题,外甥表示要正月剪头!
过年期间发现小外甥已经上小学了,我姐说老师今天给他们布置了寒假作业:每天坚持做乘法和加减法混合运算。
快学Python
2023/03/06
5310
用Python出了3000道数学题,外甥表示要正月剪头!
小试牛刀:VS Code+CodeBuddy初体验
我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴
Windows技术交流
2025/05/13
3700
LeetCode 题目解答——第 227 到 310 题
[Updated on 9/22/2017] 如今回头看来,里面很多做法都不是最佳的,有的从复杂度上根本就不是最优解,有的写的太啰嗦,有的则用了一些过于 tricky 的方法。我没有为了这个再更新,就让它们去吧。
四火
2022/07/19
1.2K0
LeetCode 题目解答——第 227 到 310 题
LeetCode 43,一题学会高精度算法
今天和大家讨论的算法是高精度,对应的LeetCode是第43题。题面其实没什么好说的,以字符串的形式给定两个数字,要求返回这两个数字的乘积。之所以是以字符串的形式给数字是因为这个数字可能会非常大,题目当中给定的范围是110位的数字。对于Python来说这不是问题,但是对于C++和Java等语言来说这么大的数字是无法以int类型存储的,所以必须要使用字符串来接收。
TechFlow-承志
2020/03/23
1.2K0
​LeetCode刷题实战43:字符串相乘
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !
程序员小猿
2021/01/20
4540
​LeetCode刷题实战43:字符串相乘
流程控制知识大闯关
既然已经学习了 Java 中的流程控制,接下来就来实际操作下,利用我们所学知识来解决实际的问题。
村雨遥
2022/12/05
4190
Python处理CSV,Excel,PD
逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。
py3study
2020/01/07
1.6K0
为什么每次登录系统都有烦人的验证码?
每次登录系统的时候总是要输入烦人的验证码,那么我们今天就思考这个问题,为什么要有验证码这个功能?很多伙伴应该都知道:
不安分的猿人
2020/06/15
1.1K0
Python生成器
利用迭代器,我们可以在每次迭代获取数据(通过 next() 方法)时按照特定的规律进行生成。但是我们在实现一个迭代器时,关于当前迭代到的状态需要我们自己记录,进而才能根据当前状态生成下一个数据。为了达到记录当前状态,并配合 next() 函数进行迭代使用,我们可以采用更简便的语法,即 生成器(generator)。
忆想不到的晖
2021/04/04
4230
Python生成器
Python语言练习
Python程序由指令组成,运行程序时,计算机依据预设好的指令执行程序。 print是最简单,但很常用的指令,它用于将一些信息输出至屏幕上。 下面演示Python中的print指令:
荣仔_最靓的仔
2021/02/02
3.1K0
Python语言练习
NLP构建代码生成器
在这个博客中,我尝试构建一个python代码生成器,可以将简单的英语问题语句转换为相应的python代码。
磐创AI
2021/08/05
1.3K0
NLP构建代码生成器
软件工程作业02
根据用户输入的文本,总结并返回摘要。
CN_Simo
2017/12/26
7340
软件工程作业02
python练习题参考答案来啦(2)
昨天放了第三篇的参考答案,仅供参考,想要学的更深入一些可以自己看一些算法类的书籍或者文章,应该会更系统和专业。
叶子陪你玩
2021/12/28
8840
python练习题参考答案来啦(2)
适合新手练习的五个Python小项目,附源码,赶紧来联系吧!
小白的大数据之旅
2024/11/20
1400
适合新手练习的五个Python小项目,附源码,赶紧来联系吧!
相关推荐
同款老父亲,Python 随机小学生数学训练题生成源码
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档