zoukankan      html  css  js  c++  java
  • 简单四则运算实现--第二次作业

    这次的代码码云地址为:https://gitee.com/z_m_g/personal_project41678/tree/master/2016035107300

    PSP2.1

    Personal Software ProcessStages

    预估耗时(分钟)

    实际耗时(分钟)

    Planning

    计划

    480

    500

    Estimate

    估计这个任务需要多少时间

    480

    360

    Development

    开发

    240

    200

    Analiysis

    需求分析(包括学习新技术)

    30

    30

    Design Spec

    生成设计文档

    10

    20

    Design Review

    设计复审

    10

    5

    Coding Standard

    代码规范(为目前的开发制定合适的规范)

    20

    5

    Design

    具体设计

    20

    5

    Coding

    具体编码

    60

    150

    Code Review

    代码复审

    20

    100

    Test

    测试(自我测试,修改代码,提交修改)

    30

    20

    Reporting

    报告

    0

    0

    Test Repor

    测试报告

    0

    0

    Size Measurement

    计算工作量

    0

    0

    Postmortem & Process Improvement Plan

     

    事后总结,并提出过程改进计划

    60

    20

     

    合计

    500

    585

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    拿到题目之后就需要考虑四则运算在给的几种语言中选择了一个相对来说比较会的语言,但是看到题目要求是必须从命令行获取数据的边去万能的百度搜索了很多但是都没有找到看明白的解决方案,看过老师的教学视频之后便明白了该怎么去操作,运用argparse类传入两个值,并把值保存在suanshi里面,import argparse

    parser = argparse.ArgumentParser(description = 'Process some string')
    parser.add_argument("a",type=str)
    args = parser.parse_args()
    suanshi=args.a

    接受输入的是字符串类型,所以在接下来要实现运算时就需要将字符串转换为数字啦。

    接受数字解决完之后就需要解决加减的简单问题了,所以需要先定义函数,定义好函数之后就要实现算法了,先通过split分割函数把saunshi的列表切出一个一个数字,再通过遍历将字符串转换为数字,之后就可以用中间变量sums存放每次遍历相加的结果,最后返回sums这个数值,加法函数就完成了。

     

    def additive(suanshi):
      sums = 0
      lis = suanshi.split("+")
      for num in lis:
      nums = int(num)
      sums =sums+nums 
    return sums

    减法与加法有些差别,我使用加法结构写减法时发现我输入4-3时就会输出-7的结果,输入5-3就会得出-8的结果,我便在sums =sums-nums后加了一句print sums 结果sums的结果返回的是sums的负数,我找了一会代码发现原来是加法时sums我一开始赋值为0,第一次循环时计算0-sums 结果就是-sums了,我又重新思考了一下减法,我使减法的的中间变量初始值为0再加上列表中第一位在循环列表元素就好了,这个便是我的减法代码 

    def subtraction(suanshi):
      jian = 0
      lis = suanshi.split("-")
      jian = jian+int(lis[0])
      del lis[0]

      for num in lis:
        nums = int(num)
        jian = jian-nums
    return jian

    乘法的suan算法与加法一致,除法与减法的算法一致,不过乘法的中间变量初始化为1,因为1乘以任何数都是任何数。

    ##乘法

    def multiplicative(suanshi):
      cheng = 1
      lis = suanshi.split("*")
      for num in lis:
        nums = int(num)
        cheng = cheng*nums

    return cheng

     

    简单四则运算流程图:
      

     

    程序单元测试:

    因为我编写的简单四则运算没有实现异常处理所以我的测试代码就只是验证了在正常输入的情况下,输入的值所所可以得到的结果,其中unittest是python自带的测试代码,可以在测试文件中导入这个包,其中assertEqual()函数是测试你程序出现的结果与你给定预期的结果是否一致的,如果一致返回True并计算程序所消耗的时间,若出现错误就会返回false 。

    from calculator import *
    import unittest

    class TextCalculator(unittest.TestCase):
    def test_additive(self):
    ta = additive(3+4+3)
    self.assertEqual(ta,10)

    def test_subtraction(self):
    ta = subtraction(3-4-3)
    self.assertEqual(ta,-3)

    def test_multiplicative(self):
    ta = multiplicative(3*4*3)
    self.assertEqual(ta,36)

    def test_division(self):
    ta = division(12*4*3)
    self.assertEqual(ta,1.0)


    if __name__ =="__main__":##这里是调用这个函数。
    unittest.main()

  • 相关阅读:
    初学node.js-nodejs中实现用户登录路由
    初学node.js-nodejs中实现用户注册路由
    初学node.js-nodejs连接MongoDB(5)
    初学node.js-MongoDB安装和环境服务配置(4)
    初学node.js-nodejs中实现HTTP服务(3)
    初学node.js-npm使用(2)
    初学node.js-nodejs安装运行(1)
    python-两个图片相似度算法
    python-两个筛子数据可视化(直方图)
    从头学习网络编程——网络编程学习笔记 :什么是HTTP与CGI?
  • 原文地址:https://www.cnblogs.com/zhoumg-/p/9935125.html
Copyright © 2011-2022 走看看