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

  • 相关阅读:
    Ant: Class not found: javac1.8
    (转)ant 使用指南
    炼数成金(dataguru)IT技能修炼
    [原创]记我的6年测试经历
    CentOS6.5 安装并配置vsftpd
    炫龙炎魔T1笔记本 Win7 系统安装
    Oracl数据库+PL/SQL安装与配置
    C# 面试题
    Linux安装Python3后,如何使用pip命令
    CentOS7 Python2 和Python3 共存(Python3安装)【转】
  • 原文地址:https://www.cnblogs.com/lymh/p/11573877.html
Copyright © 2011-2022 走看看