• 结对编程


    要求0作业地址:【https://edu.cnblogs.com/campus/nenu/2016CS/homework/2266

    要求一:git地址:https://git.coding.net/hanyh343/f4.git

    要求二结对编程同学:谢霖  学号:2016011901 博客地址:http://www.cnblogs.com/xlin-blog/

    重点、难点、编程收获

    功能一:

    虽然输入全是整数,但是输出的既可以是整数也可以是小数,而且小数的小数点后几位也是不固定的,且输入的整数是随机产生的,主要用了python中的random标准库,而且我们用了eval函数产生12~14位的小数,用round函数确定无限小数的位数是三位

    功能二:

    运算符增加了括号,且是随机产生的,仍然用random标准库生成,括号的顺序我们没有用逆波兰解决,只是用了if语句,因为我们对逆波兰不太了解,搜索了也没太弄明白

    功能三:

    因为前两个一直没弄出来让用户自己选择题目的数量,所以再弄功能三的时候没有激情和动力

    编程收获:展示代码

    #!/usr/bin/python
    class f4(object):
        def __init__(self):
            pass
        def _f4_integer_parser(self,x):
                  
           while True:
            x=raw_input('输入一个整数:')  
            if x.isdigit():
         
               break
        
            else:
            
                 print('请输入一个整数')
        def _f4(self):
            from random import randint as m
            from random import uniform as n
            from fractions import Fraction as p
         
            ops = ['+', '-', '*', '/']
            _b1 = m(0, 1)
            _b2 = m(0, 1)
            _b3 = m(0, 1)
            _l1 = m(1, 2)
            _l2 = m(1, 2)
            _l3 = m(1, 2)
            add_1 = n(0, 1)
            add_1 = p(add_1).limit_denominator(10)
            add_2 = n(0, 1)
            add_2 = p(add_2).limit_denominator(10)
            add_3 = m(1, 10)
            add_4 = m(1, 10)
            o_1 = m(0, 2)
            o_2 = m(0, 3)
            o_3 = m(0, 3)
            ex =  str(add_1) + ops[o_1] + str(add_2) + 
                 ops[o_2]  + str(add_3)  + 
                 ops[o_3] + str(add_4) 
            return (ex)
        def _f4_answer(self,ex):
            _answer = eval(ex)
         
            _answer=str(round(_answer,3))
            return(_answer)
        def _f4_input(self):
            try:
                _y = 0
                _z = 0
                for i in range(10):
                    _ex = f4()._f4()
                    print(_ex, "=")
                    _ans_right = f4()._f4_answer(ex = _ex)
                    _ans = input("?")  
                    if _ans == _ans_right:
                        print("回答正确.")
                        _y = _y + 1
                    else:
                        print("回答错误,正确答案是", _ans_right)
                        _z = _z + 1
                print("总共10道题,你答对", _y, "道题")
            except:
                print("输入有误")
                return(0)
       
    
    if __name__ == "__main__":
        import argparse
        parser = argparse.ArgumentParser()
        parser.add_argument("-c", "--cin")
        args = parser.parse_args()
        if args.cin == None:
            f4()._f4_input()
        else:
            f4()._f4_integer_parser(args.cin)

      

    我们的要求一的代码在f4.py中,f6.py存放的是要求二的代码,主要是运用了一个循环结构判断输入的X题数是否为整数,是跳出循环否继续输入一个X

     还有就是用了python中的random产生随机数,进行四则运算

     def _f4_integer_parser(self,x):
                  
           while True:
            x=raw_input('输入一个整数:')  
            if x.isdigit():
         
               break
        
            else:
            
                 print('请输入一个整数')

    还有就是用eval将结果变成12~14位的小数,然后我们用了round()函数固定小数位数为三位

    def _f4_answer(self,ex):
            _answer = eval(ex)
         
            _answer=str(round(_answer,3))
            return(_answer)

    要求二代码

    #!/usr/bin/python
    class f6(object):
        def __init__(self):
            pass
        def _f6(self):
            from random import randint as m
            from random import uniform as n
            from fractions import Fraction as p
            ops = ['+', '-', '*', '/']
            bra = ['(','',')']
            _b1 = m(0, 1)
            _b2 = m(0, 1)
            _b3 = m(0, 1)
            _l1 = m(1, 2)
            _l2 = m(1, 2)
            _l3 = m(1, 2)
            if _b1 == 0:
                _b2 = 1
                _b3 = 1
                if _l1 == 2:
                    _l2 = 1
                    _l3 = 1
                else:
                    _l2 = 2
                    _l3 = 1
            else:
                if _b2 == 0:
                    _b3 = 1
                    _l1 = 1
                    if _l2 == 2:
                        _l3 = 1
                    else:
                        _l3 = 2
                else:
                    _b3 = 0
                    _l1 = 1
                    _l2 = 1
                    _l3 = 2
            add_1 = n(0, 1)
            add_1 = p(add_1).limit_denominator(10)
            add_2 = n(0, 1)
            add_2 = p(add_2).limit_denominator(10)
            add_3 = m(1, 10)
            add_4 = m(1, 10)
            o_1 = m(0, 2)
            o_2 = m(0, 3)
            o_3 = m(0, 3)
            ex =  bra[_b1] + str(add_1) + ops[o_1] + bra[_b2] + str(add_2) + 
                 bra[_l1] + ops[o_2] + bra[_b3] + str(add_3) + bra[_l2] + 
                 ops[o_3] + str(add_4) + bra[_l3]
            return (ex)
        def _f6_answer(self,ex):
            _answer = eval(ex)
         
            _answer=str(round(_answer,3))
            return(_answer)
        def _f6_input(self):
            try:
                _y = 0
                _z = 0
                for i in range(10):
                    _ex = f6()._f6()
                    print(_ex, "=")
                    _ans_right = f6()._f6_answer(ex = _ex)
                    _ans = input("?")  
                    if _ans == _ans_right:
                        print("回答正确.")
                        _y = _y + 1
                    else:
                        print("回答错误,正确答案是", _ans_right)
                        _z = _z + 1
                print("总共10道题,你答对", _y, "道题")
            except:
                print("输入有误")
                return(0)
       
    
    if __name__ == "__main__":
        import argparse
        parser = argparse.ArgumentParser()
        parser.add_argument("-c", "--cin")
        args = parser.parse_args()
        if args.cin == None:
            f6()._f6_input()
        else:
            f6()._f6_integer_parser(args.cin)

    要求二里主要是随机添加括号,我们用了if语句随机添加括号

     if _b1 == 0:
                _b2 = 1
                _b3 = 1
                if _l1 == 2:
                    _l2 = 1
                    _l3 = 1
                else:
                    _l2 = 2
                    _l3 = 1
            else:
                if _b2 == 0:
                    _b3 = 1
                    _l1 = 1
                    if _l2 == 2:
                        _l3 = 1
                    else:
                        _l3 = 2
                else:
                    _b3 = 0
                    _l1 = 1
                    _l2 = 1
                    _l3 = 2

    结对编程的体会

    合作编程大大节省了我们的时间,尤其是当我们编译过程中出错,一个人改错另一个人搜索更适合的方法和出错的原有,且两人之间可以相互交流意见,能补充一个人弱势的地方,而且编程更加具有积极性

    至少3项在编码、争论等活动中花费时间较长,给你较大收获的事件。

    1. 因为我们的python基础很弱,这次编程可以说是一边查一边改的,在查找资料上花费了大量时间。
    2. 关于Python输入阿拉伯数字,尝试了很多方法但是还是没能改出来,是我们这次作业的一个很大的遗憾,所以我们没能实现用户输入答题题数
    3. 关于小数点后几位的,一开始我们频频撞墙就是改不了位数,频频报错,后来我们直接写死位数,用round函数直接固定3个位数

    运行截图

  • 相关阅读:
    js下拉列表效果
    js格式化数字/日期
    通用的网页上的播放本地视频文件
    综合
    componentartclientmodeediting
    ESC键
    asp.net/ajax
    转载MS AJAX
    不允许进行远程连接可能会导致此失败 error: 40
    2007.9.17
  • 原文地址:https://www.cnblogs.com/hanyh343/p/9933145.html
Copyright © 2020-2023  润新知