• 软件工程第三次作业


    要求0  作业地址:  https://edu.cnblogs.com/campus/nenu/2016CS/homework/2266

    要求1       git仓库地址:https://git.coding.net/wishsama/f4.git

    要求2  

    一.编程队友及博客地址

        陈博澜  http://www.cnblogs.com/chenbl440/p/9933574.html

    二.解题思路

      利用python的list存储算式,把随机生成的数和运算符存入list,再转换成string输出。

      功能1算式生成如下

     1     len = 7
     2     formula = []
     3     add = ""
     4     while len > 0:
     5         if len % 2 == 1:
     6             add = str(random.randint(1, 9))
     7         if len % 2 == 0:
     8             add = ops[random.randint(0, 3)]
     9         formula.append(add)
    10         len -= 1

      在合适位置随机生成第一个“(”,用该位置推算“)”的可能位置并随机生成,没时间做第二个括号了

    1 if_parenthesis = random.randint(1,100)
    2     if if_parenthesis > 50:
    3         open_parenth1 = random.randrange(1, 5, 2)
    4         close_parenth1 = random.randrange(open_parenth1+3, 8, 2)
    5         formula.insert(open_parenth1-1, '(')
    6         formula.insert(close_parenth1, ')')

      计算的时候遍历list,找到第一个应该计算的运算符,计算左右两边后修改list并pop两个元素,重新遍历直到没有运算符剩下

     1 def calculate(formula):
     2     while 1:
     3         if '*' in formula or '/' in formula:
     4             for i, j in enumerate(formula):
     5                 if j == '*':
     6                     formula[i+1] = float(formula[i-1]) * float(formula[i+1])
     7                     formula.pop(i-1)
     8                     formula.pop(i-1)
     9                     break
    10                 if j == '/':
    11                     formula[i+1] = float(formula[i-1]) / float(formula[i+1])
    12                     formula.pop(i-1)
    13                     formula.pop(i-1)
    14                     break
    15         if '+' in formula or '-' in formula:
    16             for i, j in enumerate(formula):
    17                 if j == '+':
    18                     formula[i+1] = float(formula[i-1]) + float(formula[i+1])
    19                     formula.pop(i-1)
    20                     formula.pop(i-1)
    21                     break
    22                 if j == '-':
    23                     formula[i+1] = float(formula[i-1]) - float(formula[i+1])
    24                     formula.pop(i-1)
    25                     formula.pop(i-1)
    26                     break
    27         else:
    28             return formula

      计算带括号的算式时先找到第一个“)”,向前推出配对的“(”,计算出括号内的最终结果,删除括号及内容并用结果替代

     1 def parenth(formula):
     2     if "(" in formula:
     3         while 1:
     4             if ")" in formula:
     5                 b = formula.index(")")
     6                 for i in range(b,-1,-1):
     7                     if formula[i] == "(":
     8                         new_list = []
     9                         new_list = formula[i+1:b]
    10                         byte = calculate(new_list)[0]
    11                         del(formula[i:b+1])
    12                         formula.insert(i,byte)
    13                         break
    14             else:
    15                 return calculate(formula)
    16 
    17     else:
    18         calculate(formula)

      难点:

        1. 多个括号的插入

        2. 计算过程

        3. 输出格式(预计通过字符串操作解决,没时间了)

      编程体会

        结对编程提升了完成效率,避免了一个人编程时发生的粗心等问题,节省了找bug时间。但没有达到两倍的效率,所以实际上是浪费资源,各自负责一部分是更优的选择。构建之法中将编程和赛车飞机导航相提并论我不敢苟同,赛车飞机导航比起效率更注重安全性和稳定性,一次失误将导致生命的危险。而编程并不,编程有二次修改的机会,更注重经济效率,结对只会浪费人力资源。

      至少3项在编码、争论等活动中花费时间较长,给你较大收获的事件:

        1. 要求3的重复检查(没有解决思路)

        2. 实现计算顺序的过程中复习了python数据存储结构知识

        3. 随机生成算式和括号时的合法性

        

    照片:

      

  • 相关阅读:
    《Machine Learning in Action》—— 白话贝叶斯,“恰瓜群众”应该恰好瓜还是恰坏瓜
    《Machine Learning in Action》—— 女同学问Taoye,KNN应该怎么玩才能通关
    《Machine Learning in Action》—— Taoye给你讲讲决策树到底是支什么“鬼”
    深度学习炼丹术 —— Taoye不讲码德,又水文了,居然写感知器这么简单的内容
    《Machine Learning in Action》—— 浅谈线性回归的那些事
    《Machine Learning in Action》—— 懂的都懂,不懂的也能懂。非线性支持向量机
    《Machine Learning in Action》—— hao朋友,快来玩啊,决策树呦
    《Machine Learning in Action》—— 剖析支持向量机,优化SMO
    《Machine Learning in Action》—— 剖析支持向量机,单手狂撕线性SVM
    JVM 字节码指令
  • 原文地址:https://www.cnblogs.com/wangwx523/p/9932867.html
Copyright © 2020-2023  润新知