zoukankan      html  css  js  c++  java
  • 20200924-5 四则运算试题生成,结对

    要求1 参考《构建之法》第4章两人合作,结对编程上述功能,要求每人发布随笔1篇 (代码是共同完成的,随笔有以下两种方式:(①允许两人写一份,得一份分数,二人均分;②如果每人写一份,内容不得抄袭,体会需要是自己的,分别得到自己博客的分数)。

    (1) 给出每个功能的重点、难点、编程收获。

    结对编程伙伴:思得 李思源 

    开发环境 Windows10 (全程使用李思源同学笔记本开发)

    开发工具是 Visual Studio 2019(需安装Python开发环境,Python版本选择3.8)

    版本控制:Git

    Coding:https://e.coding.net/thinkget/wf/f4.git

    功能1. 四则运算  功能2. 支持括号 功能4. 支持分数出题和运算 不需要进行文件操作,功能相近,一起完成。

    重点:四则运算,支持括号,分数运算

    难点:计算顺序,括号内先计算,分数与除法的区分。

    编程收获:不局限于固定思维,一般想到计算会用栈来完成,但本题说4个数字,用穷举暴力就可以很好完成。还学会了python随机数的使用,用随机数表示运算符,生成随机的测试数字等。

    def random_yunsuan(a, b, t, side=0):#进行运算和位置关系处理
        if side==0:
            if t==1:
                return a+b
            elif t==2:
                return a-b
            elif t==3:
                return a*b
            elif t==4:
                return a/b
        elif side==1:
            if t==1:
                return b+a
            elif t==2:
                return b-a
            elif t==3:
                return b*a
            elif t==4:
                return b/a

    def build_question():是产生算术题的程序,采用暴力实现,代码逻辑简单,代码量较大,读者可以从git仓库获取源码自行阅读。

    测试截图:

    功能3. 限定题目数量,"精美"打印输出,避免重复

    重点:限定题目数量

    难点:文件操作,写入到txt中。

    编程收获:加强了python文件的读写操作理解。

    def output(x):
        integer = "请输入正整数。"
        try:
            x = int(x)
            if x >= 0:
                data=open("data.txt",'w+')
                for i in range(x):
                    suan_shi, sum=build_question()
                    suan_shi =suan_shi + "="
                    zs=(int)(sum.numerator/sum.denominator)
                    fs=sum-zs
                    if fs==Fraction(0, 1):
                        #print(suan_shi.ljust(40), str(zs))
                        print ('{:<30}{:<20}' .format(suan_shi,str(zs)),file=data)
                    elif zs==0 and fs!=Fraction(0, 1):
                        #print(suan_shi.ljust(40), str(fs))
                        print ('{:<30}{:<20}' .format(suan_shi,str(fs)),file=data)
                    else:
                        if fs<Fraction(0, 1):
                            fs=-fs
                        #print(suan_shi.ljust(40), str(zs)+" "+str(fs))
                        print ('{:<30}{:<20}' .format(suan_shi,str(zs)+" "+str(fs)),file=data)
                data.close()
            else:
                print(integer)
        except:
            print(integer)
        return(0)

     测试截图:

    功能5 未来

    PyQt可以很方便的将Python代码实现成GUI模式,直接调运相应函数即可实现。

    (2)结对编程的体会

    在这次结对编程中,两个人合作编写代码可以高效的进行开发,因为结对编程让两个人写的代码不断处于“复审”过程,发现小错误可以及时改正,因为代码要两个人看,所以代码也更加规范。而且两个人编程会有更多“奇思妙想”,我想用栈实现,李思源同学指出暴力法实现更加简洁。在这里我要对李思源同学表示感谢,感谢李思源同学治好了我的“拖延症”,拉着我在假期之前完成了这次作业,我本来想假期在写的,事实也证明了假期是不可能写作业的,从这几天就能看出,一放假立马进入“小埋”模式,今天总算是意识到自己有多颓废(其实是很无聊,不知道该干啥),开始写博客,而李思源同学在完成编程后第一时间就发布博客了,对不起,严重拖了团队的后腿。

    (3) 至少5项在编码、争论、复审等活动中花费时间较长,给你较大收获的事件。 (10分)

    1. 开发前,就开发技术、环境等进行讨论。

    我熟悉Python,而李思源同学熟悉C#,对于我来说学习C#时间成本过高,感谢李思源同学的迁就,更佩服李思源同学学习能力,Python比我写的都好。

    2.代码逻辑

    我想借鉴题目里隐晦提出的逆波兰表达式,结合栈来实现,李思源同学提出:题目要求里提出只有4个数字运算,采用暴力法代码逻辑更清晰,也更容易实现。很佩服他的编程思维,化繁为简。

    3.代码规范

    李思源同学是C#大神,但总是习惯于在最后加“;”号,我觉得以后从事的研究里Python用的会更多,提醒了李思源同学“习惯性”操作。

    4.Python随机数的使用

    第一次接触Python随机数,并通过查阅资料学会了如何使用。

    5.命令行参数的使用,代码虽然使用编辑器写的,但程序是交付用户使用,命令行参数很重要。

    要求2 给出结对开发的截图证据,要求截图能够证明你们是在结对编程。 (5分)

     

    图片由学长帮忙拍摄,结对编程地点:自习室。

    要求3 使用coding.net做版本控制。

    https://e.coding.net/thinkget/wf/f4.git

  • 相关阅读:
    HDU 1285 确定比赛名次(拓扑排序模板)
    POJ 1679 The Unique MST(次小生成树)
    POJ 3026 Borg Maze(Prim+bfs求各点间距离)
    POJ 2349 Arctic Network(最小生成树+求第k大边)
    POJ 3169 Layout (spfa+差分约束)
    给定两个list A ,B,请用找出 A ,B中相同的元素,A ,B中不同的元素 ??
    什么是http协议??
    Python2中range 和xrange的区别??
    死锁 ??
    调度算法 ??
  • 原文地址:https://www.cnblogs.com/lhbat/p/13763656.html
Copyright © 2011-2022 走看看