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

原文地址:https://www.cnblogs.com/zhaomz853/p/9753129.html