综合实践第二次作业——四则运算出题/结对编程

我:

学号:1711425   姓名:ZXJ

结对编程对象:

学号:1711520   姓名:ZXH

 

一、作业要求

 1.基本要求

  a)300道四则运算题

  b)100以内的数字

  c)结果在[0-100]之间

  d)包含两个运算符

 2.进阶要求

  a)题目避免重复

  b)可扩展性

  c)可定制(数量/打印方式)

  d)具体定制

    ·是否有乘除法

    ·除法有无余数,是否支持分数,打印中每行的间隔可调整

 

二、开发环境

  语言:Python

  系统:window 10

  软件:pycharm 

 

三、过程分析及分工

 1.分工:

  程序大部分代码:ZXH

  代码测试及寻找问题:ZXJ

 2.过程分析:

  一开始我们纠结选择什么语言进行开发,因为最近在学习python语言,所以最终选择了python。在课堂上看过

题目后,我们认为题目还是不难的,直到着手开始敲代码时才发现错得离谱呀。第一次尝试时我们想要采用运算符号

与数字都随机抽取的方式,发现运算符的处理很麻烦,所以放弃了。之后ZXH说我们不要想那么复杂,直接列出来不

就完了,他就开始操刀,我在旁边辅助。最终我们用共10个随机数字或字母排列组合,代表了所有可能的结果,有了

lambda函数我们更快速地写出所有逻辑。while循环控制题目数量在300以内。嵌套if语句控制结果在0-100之内。

 

四、遇到的问题及解决方案

 1. 问题:输出题目数量不足300

  原因:在判断式子答案大于100后,不输出式子,导致判断式子答案的次数为300,但是输出数量不足300

  方案:加入一个整型变量count用作计数,每次输出后计数+1,while循环判断条件改为判断count的数值

 2. 问题:对于结果不为整数的式子,无法显示正确的答案

  原因:由于考虑到是小学题目,一开始我们定义变量全为整型,导致除法若无法整除而有余数,输出的答案就不正确

  方案:未解决,经过讨论认为只有答案显示为分数才是最符合实际的,由于能力有限,确实想不到解决方案

 3.问题:没有完成任何的进阶要求

  原因:对于python的学习刚刚入门,能力不足

  方案:在对python的学习更加深入后尝试解决

 4.问题:第二个运算符大部分为“/”

  原因:在列出运算符的所有排列组合方式时,将“/”都放在了第二位

  方案:由于加减是同级运算,而乘除是同级运算,所以运算符顺序对出题没有影响,无需解决方案

 

五、代码测试结果

 

 

六、心得体会

  这次的结对编程让我体会到合作的重要性,有些时候,出现BUG或者出现问题,一个人苦思冥想是找不出解决办法的。

而在合作过程中,对于对方思维的理解是很重要的,在ZXH提出把所有式子列出来的时候我是有点懵的,他开始敲代码之

后我才理解他的意思,之后出现过比较多的细节问题,也产生过分歧,在不断的沟通交流之后也得到了解决。而且,结对

编程的效率比一个人的效率高很多,我在旁边看着,ZXH一出错我就可以提醒他,否则代码测试的时候会因为找BUG而崩

溃的哈哈哈哈哈哈哈。

 

七、源代码

import random
class math_exam():
    operator={
        '1':lambda x,y,z:x+y+z,'2':lambda x,y,z:x-y-z,'3':lambda x,y,z:x*y*z,'4':lambda x,y,z:x/y/z,
        '5':lambda x,y,z:x+y-z,'6':lambda  x,y,z:x+y*z,'7':lambda x,y,z:x+y/z,'8':lambda x,y,z:x-y*z,
        '9':lambda x,y,z:x-y/z,'z':lambda x,y,z:x*y/z
    }
    def math_operation(self):
        count=0
        while count<=300:
            num_1 = random.randint(1, 100)
            num_2 = random.randint(1, 100)
            num_3 = random.randint(1, 100)
            map = random.choice('12346789z')
            if map=='1':
                b = int(self.operator[map](num_1,num_2,num_3))
                if 0<b<=100:
                    print(num_1,'+',num_2,'+',num_3,'=',b)
                    count=count+1
            elif map=='2':
                b = int(self.operator[map](num_1, num_2, num_3))
                if 0<b<=100:
                    print(num_1, '-', num_2, '-', num_3, '=', b)
                    count=count+1
            elif map == '3':
                b = int(self.operator[map](num_1,num_2,num_3))
                if 0<b<=100:
                    print(num_1, '*', num_2, '*', num_3, '=',b)
                    count=count+1
            elif map == '4':
                b = int(self.operator[map](num_1,num_2,num_3))
                if 0<b<=100:
                    print(num_1, '/', num_2, '/', num_3, '=', b)
                    count=count+1
            elif map == '5':
                b = int(self.operator[map](num_1,num_2,num_3))
                if 0<b<=100:
                    print(num_1, '+', num_2, '-', num_3, '=', b)
                    count=count+1
            elif map=='6':
                b =int(self.operator[map](num_1,num_2,num_3))
                if 0<b<=100:
                    print(num_1, '+', num_2, '*', num_3, '=', b)
                    count=count+1
            elif map=='7':
                b = int(self.operator[map](num_1,num_2,num_3))
                if 0<b<=100:
                    print(num_1, '+', num_2, '/', num_3, '=', b)
                    count=count+1
            elif map=='8':
                b = int(self.operator[map](num_1,num_2,num_3))
                if 0<b<=100:
                    print(num_1, '-', num_2, '*', num_3, '=', b)
                    count=count+1
            elif map=='9':
                b = int(self.operator[map](num_1,num_2,num_3))
                if 0<b<=100:
                    print(num_1, '-', num_2, '/', num_3, '=', b)
                    count=count+1
            elif map=='z':
                b = int(self.operator[map](num_1,num_2,num_3))
                if 0<b<=100:
                    print(num_1, '*', num_2, '/', num_3, '=', b)
                    count=count+1
a=math_exam()
a.math_operation()
Python代码

 

posted @ 2019-03-19 22:26  三号程序猿  阅读(266)  评论(0编辑  收藏  举报