zoukankan      html  css  js  c++  java
  • 自动生成小学四则运算题目

    Github项目地址:

    https://github.com/luorun194154/-/find/master

    题目要求
    - 能自动生成小学四则运算题目(注意是给小学生用的,要是结果出现负数的话他们会迷茫的!)
    - 除了整数外,还要支持真分数的四则运算

    psp表格
    PSP2.1 任务内容 计划完成需要的时间(min) 实际完成需要的时间(min)
    Planning 计划 60 80
     Estimate 估计这个任务需要多少时间,并规划大致工作步骤 15 30
    Analysis 需求分析 (包括学习新技术) 60 80
    Design 具体设计 60 80
    Coding 具体编码 600 900
    test 测试(自我测试,修改代码,提交修改) 200 150

    Postmortem & Process

    Improvement Plan

    事后总结 ,并提出过程改进计划 60 40
    Summary 合计 1050 1360


    实现代码

    import random
    import datetime
    import argparse
    import re
    from fractions import Fraction

    def OPT(up_limit=10, oper_num=2, oper_variety=4, has_fraction=True):
        '''
         * 设置参数

         * @param up_limit {int} 操作数数值上限

         * @param oper_num {int} 操作数个数

         * @param oper_variety {int} 运算符种类

         * @param has_fraction {bool} 是否带有分数
        '''
        parse = argparse.ArgumentParser()
        # 操作数数值上限
        parse.add_argument('--up_limit', type=int, default=up_limit)
        # 操作数个数
        parse.add_argument('--oper_num', type=int, default=oper_num)
        # 运算符种类
        parse.add_argument('--oper_variety', type=int, default=oper_variety)
        # 是否带有分数
        parse.add_argument('--has_fraction', type=bool, default=has_fraction)

        return parse.parse_args(args=[])

    class GeneralFormular:
        '''
         * 生成算式
         
         * @param opt {OPT} 参数
        '''
        def __init__(self, opt):
            self.opt = opt

        # @profile
        def catFormula(self, operand1, operator, operand2):
            '''
            * 连接算式

            * @param operand1 {str} 操作数1
            
            * @param opertor {str} 运算符

            * @param operand2 {str} 操作数2

            * @return {str}
            '''

            return "{}{}{}".format(operand1, operator, operand2)

        # @profile
        def getRandomIntOperand(self):
            '''
            * 返回随机整数操作数
            
            * @return {int} 
            '''
            return random.randint(0, self.opt.up_limit)
        
        # @profile
        def getRandomFractionOperand(self):
            '''
            * 返回随机分数操作数
            
            * @return {str} 
            '''
            # 生成两个整数,一个作为分子,一个作为分母
            num01 = self.getRandomIntOperand()
            num02 = self.getRandomIntOperand()
            while num01 == num02 or num02==0:
                num02 = self.getRandomIntOperand()
            while num01 == 0:
                num01 = self.getRandomIntOperand()

            # 保证分数为真分数
            if num01 < num02:
                return str(num01) + "/" + str(num02)
            else:
                return str(num02) + "/" + str(num01)

        # @profile
        def getRandomOperator(self):
            '''
            * 返回随机运算符

            * @r



  • 相关阅读:
    SQL SERVER列转换行及UNPIVOT
    25.元素,元素内容和元素属性 Walker
    16.开发工具介绍 Walker
    13.前后端程序浅解 Walker
    21.创建标准的html文件 Walker
    15.html和html5 Walker
    24.代码注释 Walker
    22.文档的基本结构 Walker
    23.单标签和双标签 Walker
    26.代码书写规范 Walker
  • 原文地址:https://www.cnblogs.com/luorunsb/p/13702636.html
Copyright © 2011-2022 走看看