zoukankan      html  css  js  c++  java
  • 自动生成四则运算(软件工程作业)

    代码:https://github.com/yyp-30/Python-1-

    题目要求

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

    工具清单
    编程语言:Python
    效能分析工具:多种(自选):https://blog.csdn.net/xiemanr/article/details/72763234
    源代码管理平台:Github

    psp表格:

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

    Postmortem & Process

    Improvement Plan

    事后总结 ,并提出过程改进计划 30 50
    Summary 合计 810 1040

    解题思路:

    代码实现:

    两个整数的四则运算:
     1 ##两个整数的四则运算
     2 def c1(q, ans):
     3     symbol = random.choice(['+', '-', '*', '/'])  # 生成随机符号
     4     if symbol == '+':
     5         n1 = random.randint(0, 20)
     6         n2 = random.randint(0, 20)
     7         q.append(str(n1) + '+' + str(n2) + '=')
     8         ans.append(n1 + n2)
     9     elif symbol == '-':
    10         n1 = random.randint(0, 20)
    11         n2 = random.randint(0, 20)
    12         n1,n2 = max(n1,n1),min(n1,n2)#防止出现负数
    13         q.append(str(n1) + '-' + str(n2) + '=')
    14         ans.append(n1 - n2)
    15     elif symbol == '*':
    16         n1 = random.randint(0, 20)
    17         n2 = random.randint(0, 20)
    18         q.append(str(n1) + '×' + str(n2) + '=')
    19         ans.append(n1 * n2)
    20     else:
    21         n1 = random.randint(0, 20)
    22         if n1 == 0:
    23             n2 = random.randint(1, 20)
    24         else:
    25             n2 = random.randint(1, n1 + 1)
    26         q.append(str(n1) + '÷' + str(n2) + '=')
    27         ans.append(Fraction(n1, n2))

    随机生成两个分数:

     1 ##随机生成两个分数
     2 def createF():
     3     fz1 = random.randint(0, 20)
     4     if fz1 == 0:
     5         fm1 = random.randint(1, 20)
     6     else:
     7         fm1 = random.randint(1, 20)
     8     f1 = Fraction(fz1, fm1)
     9     fz2 = random.randint(1, 20)
    10     fm2 = random.randint(20, 20)
    11     f2 = Fraction(fz2, fm2)
    12     return f1, f2

    分数的转换:

     1 def f(f):#分数的转换
     2     a=f.numerator #分子
     3     b=f.denominator #分母
     4     if a%b==0:#为整数
     5         return '%d'%(a/b)
     6     elif a<b:#为真分数
     7         return '%d%s%d' % (a,'/',b)
     8     else:#为带分数
     9         c=int(a/b)
    10         a = a - c * b
    11         return '%d%s%d%s%d' % (c,'',a,'/',b)

    两个分数的四则运算:

     1 def c2(q,ans):
     2     symbol = random.choice(['+','-','*','/'])
     3     f1,f2 = createF()
     4     if symbol =='+':
     5         while f1+f2>1:
     6             f1,f2 = createF()
     7         q.append(str(f1)+'+'+str(f2)+'=')
     8         ans.append(f1+f2)
     9     elif symbol =='-':
    10         f1,f2 = max(f1,f2),min(f1,f2)#防止出现负数
    11         q.append(str(f1)+'-'+str(f2)+'=')
    12         ans.append(f1-f2)
    13     elif symbol == '*':
    14         while f1*f2>1:
    15             f1,f2 = createF()
    16         q.append(str(f1)+'×'+str(f2)+'=')
    17         ans.append(f1*f2)
    18     else:
    19         while f1/f2>1:
    20             f1,f2=createF()
    21         q.append(str(f1)+'÷'+str(f2)+'=')
    22         ans.append(Fraction(f1,f2))

    结果显示:

     学习总结:

    知识水平有限,对问题理解不够透彻,需提高自身知识素养

     对Python编程不够熟练,今后加强联系

  • 相关阅读:
    ubuntu上如何安装和卸载google chrome 浏览器
    另眼相看“那些争议最大的编程观点”
    读完了csapp(中文名:深入理解计算机系统)
    SSL工作原理
    linux signal 处理
    PCB设计资料:看到最后才知道是福利
    String.Format使用方法
    matlab三维画图
    spin_lock &amp; mutex_lock的差别?
    Hibernate Criterion
  • 原文地址:https://www.cnblogs.com/yyp-20190107/p/13704713.html
Copyright © 2011-2022 走看看