• 自动生成小学四则运算题目


    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



  • 相关阅读:
    BGP综合部署
    网络综合部署
    部署LNMP架构
    编译安装Nginx网站服务及优化
    Apache网页优化
    在windows上安装jupyter,配置单机版pyspark
    剑指offer54-字符流中第一个不重复的字符
    在centos001上安装jupyter,配置单机版pyspark
    剑指offer53-表示数值的字符串
    剑指offer50-数组中重复的数字
  • 原文地址:https://www.cnblogs.com/luorunsb/p/13702636.html
Copyright © 2020-2023  润新知