Python实验——生成小学生口算题

tkinter 小学数学口算题生成器

实验说明:

在小学一、二年级,只能口算 20 以内整数的加、减法;三、四年级可以口算超过 20 的整数四则运算;五年级以上可以口算带括号的式子。
编写程序,批量生成小学口算题,要求把生成的口算题写入 Word 文件中的表格。表格共 4 列,用户指定表格行数和题目适用年级。程序运行后界面如下图所示。
在这里插入图片描述

import random
import os
import tkinter
import tkinter.ttk
from docx.shared import Pt
from docx import Document

columnsNumber = 4


def main(rowsNumbers, grade):
    if grade < 3:
        operators = '+-'
        Max = 20
    elif grade <= 4:
        operators = '+-×÷'
        Max = 100
    elif grade >= 5:
        operators = '+-×÷('
        Max = 100
    document = Document()
    table = document.add_table(rows=rowsNumbers, cols=columnsNumber)
    table.style.font.name = '微软雅黑'
    table.style.font.size = Pt(10)
    for row in range(rowsNumbers):
        for col in range(columnsNumber):
            first = random.randint(1, Max)
            second = random.randint(1, Max)
            operator = random.choice(operators)
            if operator != '(':  # 不是五年级
                if operator == '-' or '÷':
                    if first < second:
                        first, second = second, first
                r = str(first).ljust(2, ' ') + ' ' + operator + str(second).ljust(2, ' ') + '='

            else:  # 是五年级
                third = random.randint(1, 100)
                while True:
                    o1 = random.choice(operators)
                    o2 = random.choice(operators)
                    if o1 != '(' and o2 != '(':
                        break
                # 考虑括号的口算题
                r2 = random.randint(1, 100)
                if r2 > 50:
                    if o2 == '-':
                        if second < third:
                            second, third = third, second
                    r = str(first).ljust(2, ' ') + o1 + '(' + str(second).ljust(2, ' ') + o2 + str(third).ljust(2,
                                                                                                                ' ') + ')='
                else:
                    if o1 == '-':
                        if first < second:
                            first, second = second, first
                    r = '(' + str(first).ljust(2, ' ') + o1 + str(second).ljust(2, ' ') + ')' + o2 + str(third).ljust(2,
                                                                                                                      ' ') + '='

            cell = table.cell(row, col)
            cell.text = r

    document.save('小学生口算题.docx')
    os.startfile("小学生口算题.docx")


if __name__ == '__main__':
    app = tkinter.Tk()
    app.title('小学生口算题生成器')
    app['width'] = 300
    app['height'] = 150
    lableNumber = tkinter.Label(app, text='Number:', justify=tkinter.RIGHT, width=50)
    lableNumber.place(x=10, y=40, width=50, height=20)
    comboNumber = tkinter.ttk.Combobox(app, values=(100, 200, 300, 400, 500), width=50)
    comboNumber.place(x=70, y=40, width=50, height=20)

    labelGrade = tkinter.Label(app, text='Grade:', justify=tkinter.RIGHT, width=50)
    labelGrade.place(x=130, y=40, width=50, height=20)
    comboGrade = tkinter.ttk.Combobox(app, values=(1, 2, 3, 4, 5, 6), width=50)
    comboGrade.place(x=200, y=40, width=50, height=20)


    def generate():
        number = int(comboNumber.get())
        grade = int(comboGrade.get())
        rowsNumbers = int(number / 4)
        main(rowsNumbers, grade)


    buttonGenerate = tkinter.Button(app, text='Go', width=40, command=generate)
    buttonGenerate.place(x=130, y=90, width=40, height=30)

    app.mainloop()
  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
此为源码(python):开发用于小学生口算练习的小程序,适合python初学者参考。如有不足请多指正!之前上传的资料没看过评论,很多朋友遇到了问题没有及时发现沟通解决,这次末尾有联系方式,有问题的朋友可以联系交流。 详细信息如下: 一、附件为小学生口算练习小程序,为自家宝贝设计的,自用之余拿来大家分享使用,非常适合一、二、三年级的小朋友。 二、程序功能: 1、生成任意数以内的+-*/单一或混合运算的口算卡(excel文件,可打印),每张80道题。 2、任意数以内的+-*/单一或混合运算的练习(练习前选择条件),显示答题总数、正确与错误数、用时及平均时间。 3、表内乘法口算练习(同2可以显示答题信息)。 4、生成表内乘法诀练习口算卡,格式同1。 5、生成几乘几以上的专项表内乘法诀练习口算卡,格式同1。 6、表内除法口算练习(同2可以显示答题信息)。 7、每日口算打卡练习,每日出题80道,在程序中答题,显示答题总数、正确与错误数、用时及平均时间。并且会将每次答题信息记录至程序目录中的一个excel文件中,跟踪小朋友的口算情况。 三、程序为exe程序(一个exe文件和一个excel模板文件,要在一个文件夹就可以),下载后无需安装直接可以运行,并且有excel模板,如果生成的excel文件打印出线或打印不全的,可以自行调整一下模板excel文件的列宽和行高,切记:模板文件建议不要插入或删除行或列,以免错乱。 四、附件为压缩文件(使用7Z程序压缩的),可以用winrar、360、好压 等解压,如有问题可以QQ(1064386744)或邮箱、微信联系解决。
您好,我可以为您提供一个生成小学口算题的Python代码示例,供参考: ```python import random # 生成加法口算题 def generate_addition_question(min_num, max_num, num_questions): questions = [] for i in range(num_questions): num1 = random.randint(min_num, max_num) num2 = random.randint(min_num, max_num - num1) question = f"{num1} + {num2} = " questions.append(question) return questions # 生成减法口算题 def generate_subtraction_question(min_num, max_num, num_questions): questions = [] for i in range(num_questions): num1 = random.randint(min_num, max_num) num2 = random.randint(min_num, num1) question = f"{num1} - {num2} = " questions.append(question) return questions # 生成乘法口算题 def generate_multiplication_question(min_num, max_num, num_questions): questions = [] for i in range(num_questions): num1 = random.randint(min_num, max_num) num2 = random.randint(min_num, max_num) question = f"{num1} x {num2} = " questions.append(question) return questions # 测试代码 addition_questions = generate_addition_question(1, 10, 10) print("加法口算题:") for question in addition_questions: print(question) subtraction_questions = generate_subtraction_question(1, 10, 10) print("减法口算题:") for question in subtraction_questions: print(question) multiplication_questions = generate_multiplication_question(1, 10, 10) print("乘法口算题:") for question in multiplication_questions: print(question) ``` 这段代码可以生成指定数量和范围内的加、减、乘法口算题,您可以根据实际需要进行修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值