zoukankan      html  css  js  c++  java
  • 罗杨美慧 20190919-6 四则运算试题生成,结对

    本次作业要求参见:[https://edu.cnblogs.com/campus/nenu/2019fall/homework/7631]

    结对伙伴:徐丽君

    功能1  四则运算

    支持出题4个数的四则运算题目,所有题目要求作者有能力正确回答。

    重难点:随机生成多个表达式,用户输入的答案要与正确答案相比较。python中有一个函数eval能计算表达式的结果。判断结果使用一个answer 的列表存储每一个输入的答案,再用for 提取其中的每个答案并与result中的结果一一对应,判断其对错。

    重点代码片段

    def integer(n):
        ch = []                               #存储表达式
        number = random.randint(1, 4)        #随机产生表达式的数量
        for i in range(number):
            rand = random.randint(0, 1)       #随机产生0和1 判断是否使用括号
            a = func_integer(number)          #调用表达式产生函数,产生表达式
            if rand == 0:
                op = operation[random.randint(2,3)]    #产生*,/来连接有括号的表达式,避免产生+,—
                rand = random.randint(0, 1)            #随机产生0和1 判断是否使用内嵌括号或外嵌括号
                if i != number - 1:                    #避免开始和结尾用无意义的括号
                    if rand == 0:
                        ch.append('(')
                        ch.append(a)
                        ch.append(op)
                        ch.append(random.randint(1,10))
                        ch.append(')')
                        ch.append(operation[random.randint(0, 3)])
                    else:
                        ch.append(a)
                        ch.append(operation[random.randint(0, 3)])
                else:
                    ch.append(a)
                    ch.append(operation[random.randint(0, 3)])
            else:
                ch.append(a)
                ch.append(operation[random.randint(0, 3)])
    
        f = ''
        for k,i in enumerate(ch):             #把列表中的所有值用f一个个连起来
            if k != len(ch)-1:
                f += str(i)
        result_integer(f, n)                  #调用输出函数

    运行截图:

    功能2  支持括号

    重难点:生成括号,随机生成括号,判断是否符合生成括号的条件,避免一个表达式也生成括号 。

    重点代码片段

    def func_integer(number):
        f = ''
        ch = []
        rand = random.randint(0, 1)  #选择内嵌或外嵌括号
        if number != 1:         #避免一个表达式也产生括号
            if rand == 0:
                ch.append('(')
                op = operation[random.randint(0, 3)]
                ch.append(random.randint(1, 10))
                ch.append(op)
                ch.append(random.randint(1, 10))
                ch.append(')')
            else:
                op = operation[random.randint(0, 3)]
                if op == '/':
                    a = random.randint(1, 10)
                    ch.append(a)
                    ch.append(op)
                    ch.append(random.randint(a, 10))
                else:
                    ch.append(random.randint(1, 10))
                    ch.append(op)
                    ch.append(random.randint(1, 10))
        else:
            op = operation[random.randint(0, 3)]
            if op == '/':
                a = random.randint(1, 10)
                ch.append(a)
                ch.append(op)
                ch.append(random.randint(a, 10))
            else:
                ch.append(random.randint(1, 10))
                ch.append(op)
                ch.append(random.randint(1, 10))
        for i in ch:       #把产生表达式当成一个整体
            f += str(i)
        return f

    运行截图:

    功能4  支持括号

    重难点:支持真分数的运算,避免单独一个表达式生成括号。

    重点代码片段

    def func_integer(number):
        f = ''
        ch = []
        rand = random.randint(0, 1)  
        if number != 1:        
            if rand == 0:
                ch.append('(')
                op = operation[random.randint(0, 3)]
                ch.append(random.randint(1, 10))
                ch.append(op)
                ch.append(random.randint(1, 10))
                ch.append(')')
            else:
                op = operation[random.randint(0, 3)]
                if op == '/':
                    a = random.randint(1, 10)
                    ch.append(a)
                    ch.append(op)
                    ch.append(random.randint(a, 10))
                else:
                    ch.append(random.randint(1, 10))
                    ch.append(op)
                    ch.append(random.randint(1, 10))
        else:
            op = operation[random.randint(0, 3)]
            if op == '/':
                a = random.randint(1, 10)
                ch.append(a)
                ch.append(op)
                ch.append(random.randint(a, 10))
            else:
                ch.append(random.randint(1, 10))
                ch.append(op)
                ch.append(random.randint(1, 10))

    (1)编程体会:

           本次是和徐丽君同学组队进行的结对编程,两人编程难免就会有意见不合的地方,互相都想说服对方,比如首先在编程语言的选择上就会有分歧,最后选择了Python语言。另外,自己的编程能力不够,而且对Python语言并不了解,对我来说是一门新的语言。在这个过程中,徐丽君同学悉心为我指点,我也查阅了很多资料,尽量让自己跟上她的脚步。不得不说两个人共同完成编程会提供多种思路,且效率会更高一些。

    (2)编码收获以及花费时间较长和给我较大收获的事件:

    1. 在争论究竟采用哪种编程语言上花了一些时间,最后选择了Python语言编写。
    2. 这次作业中,学习了新的编程语言,安装Python环境,查阅了很多相关资料,收获很多。
    3. 对于代码的编写规范方面,编写时经常忘记遵守,导致编译失败,花费了不少的时间,在循序渐进后,我们会互相提醒对方,避免这种现象的发生。
    4. 由于两人擅长的语言不同,但对代码编程思路上有着不同的理解和思路,也让项目进度快了许多,学会了两人合作共同编程,现在能比较有默契也算是一个大的收获吧。
    5. 我的编写能力一般,查阅博客和资料以及队友的口头指点花了不少时间,也对我有了较大收获,在此非常感谢我的室友徐丽君同学。

    (3)给出照片1张,包括结对的2位同学、工作地点、计算机

    工作地点:星华公寓B320

    计算机:徐丽君同学的笔记本

    照片:

    (4)版本控制

    git地址:https://e.coding.net/xulijun/sizeyunsuan.git

  • 相关阅读:
    pat00-自测5. Shuffling Machine (20)
    Spiral Matrix
    Search in Rotated Sorted Array II
    Search in Rotated Sorted Array
    Best Time to Buy and Sell Stock II
    4Sum
    3Sum Closest
    3Sum
    MySQL存储过程、函数和游标
    Word Ladder
  • 原文地址:https://www.cnblogs.com/lymh/p/11573877.html
Copyright © 2011-2022 走看看