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



  • 相关阅读:
    Java基础知识点总结(四)
    Java基础知识点总结(三)
    用easyui实现查询条件的后端传递并自动刷新表格的两种方法
    在JDBC中实现SQL语句的模糊查询
    向DataGrid数据表格增加查询搜索框
    Java基础知识点总结(二)
    easyui中formatter的用法
    腾讯云+阿里云 搭建hadoop + hbase
    -- 记录 -- 问题记录
    -- 1 -- springboot
  • 原文地址:https://www.cnblogs.com/luorunsb/p/13702636.html
Copyright © 2011-2022 走看看