zoukankan      html  css  js  c++  java
  • 6 四则运算试题生成

    本作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2148

     git,https://git.coding.net/zhaomeizeng/wc.git

    要求1 参考《构建之法》第4章两人合作,结对编程上述功能,要求每人发布随笔1篇 (代码是共同完成的,博客是分别完成的)。 (1) 给出每个功能的重点、难点、编程收获。(2)给出结对编程的体会,以及 (3) 至少5项在编码、争论、复审等活动中花费时间较长,给你较大收获的事件。 (10分)

    (1)随机生成数和操作符,使用random;括号的生成需要判断各种情况;避免重复,查看资料要用后缀表达式,规范树等;实现分数运算要使用fraction

    这些东西都挺难的,边学习边使用边修改

    简单的生成算式

    while(i <= 20):
        list=[]
        ls_2=[]
        list.append(createnum())
        list.append(createOperator())
        list.append(createnum())
        list.append(createOperator())
        list.append(createnum())
        list.append(createOperator())
        list.append(createnum())
    
        ls_2 = string(list)
        list_str = ''.join(ls_2)
        print(list_str)
        answer = eval(list_str)
        answer_input = float(input('?'))
        if answer_input == answer:
            print("答对啦")
            t = t+1
        elif answer != answer_input:
            print("答错了,答案是" + str(answer) +"")
        #list.clear()
        i=i+1
    print("你答对了" + str(t) + "道,共20道")
    View Code

    加上括号的操作

    def getk(list):
        str1 = [0,2,4]
        str2 = [3,5,7]
        start = random.choice(str1)
        if start == 4:
            list.append(')')
            list.insert(start, '(')
        if start == 0:
            end = random.choice(str2)
            if end == 7:
                list.append(')')
            else:
                list.insert(end,')')
            list.insert(start, '(')
        elif start == 2:
            end = random.choice(str2)
            if end == 7:
                list.append(')')
            else :
                list.insert(end, ')')
            list.insert(start, '(')
    View Code

    似乎仍有不足

    根据输入,输出相应的题目

    if sys.argv[1] == '-c':
        if int(sys.argv[2]) < 0:
            print("题目数量必须是正整数")
        elif sys.argv[2] != sys.argv[2]:
            print("题目数量必须是正整数")
        else:
            n = int(sys.argv[2])
    View Code

    输出文件

    temp=sys.stdout # 记录当前输出指向,默认是consle
        with open("outputlog.txt","a+") as f:
         sys.stdout=f # 输出指向txt文件
         print(list_str1)
         sys.stdout=temp # 输出重定向回consle
         print(f.readlines()) # 将记录在文件中的结果输出到屏幕
    View Code

    做约分等操作成分数

            def reduction(self,num):
                a = num.numerator
                b = num.denominator
                divisor = function1().getMaxDivisor(a, b)
                a = a / divisor
                b = b / divisor
                num.setNumerator(a)
                num.setDenominator(b)
                return num
    
    
            def getMaxDivisor(self,numerator,denominator) :
                if denominator == 0:
                    return numerator
                else:
                    x = numerator%denominator
                    return function1().getMaxDivisor(denominator, x)
    View Code

    利用栈生成后缀式,二叉树判断还没弄太清楚

    (2)对于这次结对编程还是有些感触的。首先两个人做一个事情肯定会有分歧,都会感觉到约束,但是也会有相互的监督和鼓励,关系处理的得当更加有利于项目的实现。在开始时共同的指定相应的规范,让相互可以更好的理解自己的意图,更好的相互合作,不至于出现代码过分的混乱。由于我和范洪达的代码水平都比较低,所以更多的时候是在共同的查阅资料和学习,共同的讨论。其中难免会遇到一些冲突的地方,共同的讨论和学习就十分的必要了,在共同的学习知识过程中关系也会磨合的更加融洽。

    在相互监督指导的过程中,及时的发现错误,使得一些错误可以及早的避免,省去了一定的修改的时间。两个人的合作更多的是相互的鼓励和学习,也使我进步了很多。

    (3)编程水平不高,所以一直在学习相关的库、函数的使用,当然也遇到了一些偏差;

      在讨论决定使用哪种方式实现的时候,实际操作后发现不正确,智能重新来过

      两人的习惯不一样,在共同契合规范是要花费时间修改

      在自定义函数的分割上没有做好

        .exe的转换中一时没有理解清楚,又去学习了一下,耗费时间

    收获就是永远不要觉得自己准备的已经够充分了,上手才知道事情不会这么简单;试着去真正的倾听对方的意见而不是从内心抱着一种抵触的心态。

    要求二:

     冬华B520

  • 相关阅读:
    python网络编程-动态导入和断言
    python网络编程-socket“粘包”(小数据发送问题)
    python网络编程-socket样例
    python网络编程-socket
    python基础-实现进度条功能,for和yield实现
    精通特征工程笔记(一)
    zcmu 1540第k大数
    论文笔记 : NCF( Neural Collaborative Filtering)
    论文笔记:DeepCF
    论文笔记: Deep Learning based Recommender System: A Survey and New Perspectives
  • 原文地址:https://www.cnblogs.com/zhaomz853/p/9753129.html
Copyright © 2011-2022 走看看