• 四则运算试题生成,结对


    此作业要求参见 https://edu.cnblogs.com/campus/nenu/2019fall/homework/7631

    代码地址 https://e.coding.net/ddd111/f4.git

    结对伙伴 齐文华

    本次作业是我第一次使用python语言编程,在经过上次作业之后,我真正意识到了python语言的重要性,所以也开始认真学习了python,经过几天的学习并和结对伙伴商量之后决定这次尝试一下用python完成。由于学习还不是很深入,所以编程过程中遇到了很多问题,请教了很多同学和学长,在这里由衷的感谢他们。

    功能1. 四则运算

    功能2. 支持括号

    重难点:功能2是在功能1的基础上完成的,所以我把这两部分放在一起了。看到题目之后最先想到的是怎么生成随机数,因为编程基础较差并且是第一次使用python编程,所以查了很多资料,问了一些同学,最后选择了用random.randint()方法。

    收获:学会了random.randint()方法的使用,random.randint(a,b)用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b。

    代码如下:

    def _f4(self):
            from random import randint
            from random import uniform
            from fractions import Fraction #为符号计算所导入的包
            operator1 = ['+', '-', '*', '/']
            operator2 = ['(', '', ')']
            left_1 = randint(0, 1)
            left_2 = randint(0, 1)
            left_3 = randint(0, 1)
            right_1 = randint(1, 2)
            right_2 = randint(1, 2)
            right_3 = randint(1, 2)
            if left_1 == 0:
                left_2 = 1
                left_3 = 1
                if right_1 == 2:
                    right_2 = 1
                    right_3 = 1
                else:
                    right_2 = 2
                    right_3 = 1
            else:
                if left_2 == 0:
                    left_3 = 1
                    right_1 = 1
                    if right_2 == 2:
                        right_3 = 1
                    else:
                        right_3 = 2
                else:
                    left_3 = 0
                    right_1 = 1
                    right_2 = 1
                    right_3 = 2
            first_num = randint(1, 20)
            first_num = Fraction(first_num).limit_denominator(10)
            second_num = randint(1, 20)
            second_num = Fraction(second_num).limit_denominator(10)
            third_num = randint(1, 20)
            third_num = Fraction(third_num).limit_denominator(10)
            fourth_num = randint(1, 20)
            x = randint(0, 2)
            y = randint(0, 3)
            z = randint(0, 3)
            equal = operator2[left_1] + str(first_num) + operator1[x] + operator2[left_2] + str(second_num) + 
                 operator2[right_1] + operator1[y] + operator2[left_3] + str(third_num) + operator2[right_2] + 
                 operator1[z] + str(fourth_num) + operator2[right_3]
            return (equal)

     运行截图如下:

     

    功能3. 限定题目数量,"精美"打印输出,避免重复

    重难点:本功能要求在命令行中读取参数,也就是题目的数量,题目数量只能是正整数。还要根据输入的参数输出试题的数量,并写入txt文件。

     收获:学会了运用argparse模块来处理命令行参数,和使用ljust()方法控制输出的格式。

    代码如下:

        def _f4_integer_parser(self,x):
    p = "题目数量必须是正整数。"
    try:
    x = int(x)
    if x >= 0:
    for i in range(x):
    equal_1 = f4()._f4()
    _right = f4()._f4_answer(equal = equal_1)
    equal_1 = equal_1 + "="
    print(equal_1.ljust(50), _right)
    else:
    print(p)
    except:
    print(p)
    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)

    截图如下:

    功能4. 支持分数出题和运算

    此功能是在学长的帮助下完成,对这个功能的理解还不是很深。只知道是运用random.uniform(a,b) 方法生成随机浮点数,在[a,b)范围内,然后运用fractions.Fraction()方法生成分数形式。

     总结:

    通过本次编程我对python语言有了更加深刻的认识,同时也意识到了自己的薄弱之处,对python语言中的一些方法运用的不熟练,这一点以后还要加强练习。在这次结对作业中我也体验到了合作的乐趣,两个人一起编程比自己一个人好很多,可以一起商量对策、互相监督,这是一种很好的方式。并且通过这次作业,我的学习方法也有了很大的进步,以前遇到不会的问题很多时候都是不了了之,但是经过这次请教同学和学长,我知道了有问题不能堆积和退缩,要勇于解决问题,这样才能取得进步。

    花费时间较长、争论较多的事件及编程收获:

    1.关于使用哪种语言编程,在c语言和python中纠结之后选择了python。

    2.关于自己制定的代码规范,有时会忘记遵守,两个人相互指点和改正,浪费了一些时间。

    3.对于一些函数的使用不熟悉,查阅资料花费了大量时间。

    4.通过本次编程,了解了如何使用random.randint()方法生成一个指定范围内的整数。

    5.通过本次编程,学会了运用argparse模块来处理命令行参数,和使用ljust()方法控制输出的格式。

    使用我的电脑,地点星华公寓B214

  • 相关阅读:
    nodejs历史版本下载
    dotnetcore & docker
    Openlayers 提供的 API 读取、解析和展示 GeoJSON 描述的信息
    vue父组件和子组件的生命周期到底谁先执行?
    openlayers鼠标移动获取地图经纬度格式化的两种方式
    修改IE不兼容MAP()的问题,自定义实现JavaScript的Map对象
    惠普zhan66解决连接上网线WiFi无法打开的问题。
    Git 分支管理
    Object.entries()
    vue中 .env .env.development .env.production 详细说明
  • 原文地址:https://www.cnblogs.com/nenu-dxd/p/11583859.html
Copyright © 2020-2023  润新知