zoukankan      html  css  js  c++  java
  • 小学四则运算

    题目:小学四则运算

    目录

     一、作业信息
    
     二、作业要求
     
     三、设计实现
    
     四、代码提交
         1.四则运算
         2.两个整数的四则运算
         3.随机生成两个分数
         4.两个分数的四则运算
    
     五、运行结果及说明
         1.运行截图
         2.PSP表格
         
     六、心得体会
    

    一、作业信息

    | 博客班级 | https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18 |
    | ---- | ---- | ---- |
    | 作业要求 | https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18/homework/11377 |
    | 作业目标 | 学习如何编写随笔,学习PSP表格 |
    | 学号 | 3180701108 |

    二、作业要求

    写一个能自动生成小学四则运算题目的程序,然后在此基础上扩展:

    1)除了整数以外,还要支持真分数的四则运算,例如:1/6+1/8=7/24

    2)程序要求能处理用户的输入,判断对错,累积分数

    3)程序支持可以由用户自行选择加、减、乘、除运算

    4)使用-n参数控制生成题目的个数,例如Myapp.exe -n 10,将生成10个题目

    三、设计实现

    用def szys()实现随机生成整数的四则运算最后输出算式并返回正确答案。
    用def c1()和def c2()实现随机生成整数或分数的四则运算最后输出算式并返回正确答案。
    通过random模块生成一定区间里的随机数,分数也可以通过随机生成分子和分母的形式随机生成。同时分数可以使用Fraction模块,可以实现分数与整数的运算以及分子和分母的约分。

    四、代码提交

    四则运算

    import random
    **#四则运算**
    def szys():
        sym = ['+', '-', '×', '÷']
        f= random.randint(0, 3)
        n1 = random.randint(1, 99)
        n2 = random.randint(1, 99)
        result = 0
        if f== 0:#加法
           result  = n1 + n2
        elif f == 1:#减法,要先比较大小,防止输出负数
            n1, n2 = max(n1, n2), min(n1, n2)
            result  = n1 - n2
        elif f== 2:#乘法
            result  = n1 * n2
        elif f == 3:#除法,要比较大小,并循环取整除
            n1, n2 = max(n1, n2), min(n1, n2)
            while n1 % n2 != 0:
                n1 = random.randint(1, 10)
                n2 = random.randint(1, 10)
                n1, n2 = max(n1, n2), min(n1, n2)
            result  = int(n1 / n2)
        print(n1, sym[f], n2, '= ', end='')
        return result
    print('请输入555进行四则运算') 
    n=int(input())
    
    **#当输入555时,进行四则运算,调用函数szys()**
    if n==555:
       while True:
           result  = szys()
           j= input()
           s= int(j)
           if s== result :
               print('Bingo~答对了!')
           else:
               print('你答错了,继续加油哟~ 正确答案是:', result )
    import random
    from fractions import Fraction
    

    两个整数的四则运算

    **##两个整数的四则运算**
    def c1(q, ans):
        symbol = random.choice(['+', '-', '*', '/'])  # 生成随机符号
        if symbol == '+':
            n1 = random.randint(0, 20)
            n2 = random.randint(0, 20)
            q.append(str(n1) + '+' + str(n2) + '=')
            ans.append(n1 + n2)
        elif symbol == '-':
            n1 = random.randint(0, 20)
            n2 = random.randint(0, 20)
            n1,n2 = max(n1,n1),min(n1,n2)#防止出现负数
            q.append(str(n1) + '-' + str(n2) + '=')
            ans.append(n1 - n2)
        elif symbol == '*':
            n1 = random.randint(0, 20)
            n2 = random.randint(0, 20)
            q.append(str(n1) + '×' + str(n2) + '=')
            ans.append(n1 * n2)
        else:
            n1 = random.randint(0, 20)
            if n1 == 0:
                n2 = random.randint(1, 20)
            else:
                n2 = random.randint(1, n1 + 1)
            q.append(str(n1) + '÷' + str(n2) + '=')
            ans.append(Fraction(n1, n2))
    

    随机生成两个分数

     **##随机生成两个分数**
    def createF():
         fz1 = random.randint(0, 20)
         if fz1 == 0:
             fm1 = random.randint(1, 20)
         else:
             fm1 = random.randint(1, 20)
         f1 = Fraction(fz1, fm1)
         fz2 = random.randint(1, 20)
         fm2 = random.randint(20, 20)
         f2 = Fraction(fz2, fm2)
         return f1, f2
    def f(f):#分数的转换
         a=f.numerator #分子
         b=f.denominator #分母
         if a%b==0:#为整数
             return '%d'%(a/b)
         elif a<b:#为真分数
             return '%d%s%d' % (a,'/',b)
         else:#为带分数
             c=int(a/b)
             a = a - c * b
             return '%d%s%d%s%d' % (c,'’',a,'/',b)
    

    两个分数的四则运算

    **##两个分数的四则运算**
    def c2(q,ans):
         symbol = random.choice(['+','-','*','/'])
         f1,f2 = createF()
         if symbol =='+':
             while f1+f2>1:
                 f1,f2 = createF()
             q.append(str(f1)+'+'+str(f2)+'=')
             ans.append(f1+f2)
         elif symbol =='-':
             f1,f2 = max(f1,f2),min(f1,f2)#防止出现负数
             q.append(str(f1)+'-'+str(f2)+'=')
             ans.append(f1-f2)
         elif symbol == '*':
             while f1*f2>1:
                 f1,f2 = createF()
             q.append(str(f1)+'×'+str(f2)+'=')
             ans.append(f1*f2)
         else:
             while f1/f2>1:
                 f1,f2=createF()
             q.append(str(f1)+'÷'+str(f2)+'=')
             ans.append(Fraction(f1,f2))
    def main():
         while 1:
             print("输入题目的数量:", end='  ')
             k = int(input())
             p = 100 / k
             s = 0
             q = []
             ans = []
             ans2 = []
             for i in range(k):
                 n = random.randint(1, 4)
                 if n == 1:
                     c1(q, ans)
                     g = Fraction(ans[i])
                     ans2.append(f(g))
                 else:
                     c2(q, ans)
                     g = Fraction(ans[i])
                     ans2.append(f(g))#记录带分数答案
             for i in range(k):
                 print("第{}题:{}".format(i + 1, q[i]), end="  ")
                 a = input()
                 if a == str(ans[i]):
                     s = s + p                 
             print("所得的分数为:{}".format(s))        
             print("正确答案:", end="  ")
             for i in range(k):
                if str(ans[i]) == str(ans2[i]):
                    print(q[i] + str(ans[i]))
                else:
                    print("{}{}或{}".format(q[i],str(ans2[i]),str(ans[i])))
    `
    

    五、运行结果及说明

    1.运行截图

    2.PSP表格

    psp2.1 任务内容 计划完成需要的时间(min) 实际完成需要的时间(min)
    Planning 计划 10 15
    Estimate 估计这个任务需要多少时间,并规划大致工作步骤 120 180
    Development 开发 40 60
    Analysis 需求分析(包括学习新技术) 15 20
    Design Spec 生成设计文档 10 15
    Design Review 设计复审 10 15
    Coding Standard 代码规范 5 10
    Design 具体设计 15 20
    Coding 具体编码 30 40
    Code Review 代码复审 5 10
    Test 测试(自我测试,修改代码,提交修改) 10 25
    Reporting 报告 20 30
    Test Report 测试报告 10 15
    Size Measurement 计算工作量 5 10
    Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 10 15

    六、心得体会
    通过本次代码和博客园随笔的编写,我认为难在markdown的编写,通过请教同学我也解决了一部分问题。逐步掌握了markdown的编写方法,
    熟悉了在博客园发表文章的流程。

  • 相关阅读:
    LayUI上传图片
    快递查询
    安装 Python
    HTML5 WebSocket
    反射实例
    反射
    工厂模式之工厂方法案例
    工厂模式之简单工厂案例
    第三方登录
    封装条形码MaHelper
  • 原文地址:https://www.cnblogs.com/384bk/p/13943064.html
Copyright © 2011-2022 走看看