zoukankan      html  css  js  c++  java
  • 20201324 实验二《Python程序设计》实验报告

    20201324 2020-2021-2 《Python程序设计》实验二报告

    课程:《Python程序设计》
    班级: 2013
    姓名: 徐源
    学号:20201324
    实验教师:王志强
    实验日期:2021年4月26日
    必修/选修: 公选课

    (一)实验内容

    • 设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。
      • 基本四则运算
      • 取模运算
      • 求幂运算
      • 计算简单的三角函数
      • 求阶乘
      • 解一元二次方程
    • 考核基本语法、判定语句、循环语句、逻辑运算等知识点

    (二)实验过程及结果

    思路:先分别编写代码,实现不同功能,再将这些功能代码以函数的形式组合起来

    1.基本四则运算

    因四则运算相对较复杂,故希望通过设计函数来实现

    def arithmetic(a, b, operator):
        if operator == "+":
            return a + b
        elif operator == "-":
            return a - b
        elif operator == "*":
            return a * b
        elif operator == "/":
            return a / b
    

    负责判断、调用和打印的主函数如下

    flag = 1
    while flag == 1:
        operator = input("请输入你要做的运算:+,-,*,%,//,%,**,sin,cos:")
        a = int(input("输入一个数a:"))
        b = int(input("输入一个数b:"))
        print("a" + operator + "b = ", arithmetic(a, b, operator))
        flag = int(input("继续请输入1,退出请输入0"))
    

    2.取模运算

    print("请按照提示输入取模运算的两个操作数,注意两者均为整数")
    x = int(input("请输入被除数:"))
    y = int(input("请输入除数:"))
    while y == 0:
        print("输入错误!除数不能为0!")
        y = int(input("请重新输入整数除数:"))
    print(x % y)
    

    3.求幂运算

    a = float(input("请输入底数:"))
    b = float(input("请输入指数:"))
    print("a**b = ",a**b)
    

    4.计算简单的三角函数

    这里注意要把我们惯常使用的角度制转成弧度制

    这一部分涉及六种三角函数,较复杂,编写函数实现

    import math
    def act(x):
        if operator == "sin":
            return math.sin(x)
        elif operator == "cos":
            return math.cos(x)
        elif operator == "tan":
            return math.tan(x)
        elif operator == "asin":
            return math.asin(x)
        elif operator == "acos":
            return math.acos(x)
        elif operator == "atan":
            return math.atan(x)
    
    flag = 1
    while flag == 1:
        operator = input("请输入你要做的运算:sin,cos,tan,asin,acos,atan:")
        x = float(input("请输入数值:"))
        x = x / 180 * math.pi
        print(operator + "x = ",  act(x))
        flag = int(input("继续请输入1,退出请输入0"))
    

    5.求阶乘

    import math
    n = int(input("请输入一个整数:"))
    print("n! = ",math.factorial(n))
    

    6.解一元二次方程

    def qua():
        a = float(input("请输入a:"))
        b = float(input("请输入b:"))
        c = float(input("请输入c:"))
        d = b*b - 4*a*c
        if d>=0:
            x1 = (-b+math.sqrt(d)) / (2*a)
            x2 = (-b-math.sqrt(d)) / (2*a)
            if d==0:
                return "X1 = X2 = "+str(x1)
            else:
                return "X1 = "+str(x1)+'	'+"X2 = "+str(x2)
        else:
            x1 = str(-b/(2*a)) + '+' + str(math.sqrt(-d)/(2*a)) + 'i'
            x2 = str(-b/(2*a)) + '-' + str(math.sqrt(-d)/(2*a)) + 'i'
            return "X1 = "+x1+'	'+"X2 = "+x2
    

    将上述代码分装成不同函数,在主函数中根据用户的选择来完成调用

    7.完整代码

    import math
    def arithmetic(a, b, operator):
        if operator == "+":
            return a + b
        elif operator == "-":
            return a - b
        elif operator == "*":
            return a * b
        elif operator == "/":
            return a / b
        elif operator == "//":
            return a // b
        elif operator == "%":
            return a % b
    
    
    def act(x,operator):
        if operator == "sin":
            return math.sin(x)
        elif operator == "cos":
            return math.cos(x)
        elif operator == "tan":
            return math.tan(x)
        elif operator == "asin":
            return math.asin(x)
        elif operator == "acos":
            return math.acos(x)
        elif operator == "atan":
            return math.atan(x)
    
    
    def operation1():
        print("现在进行 1.基本四则运算")
        operator = input("请输入你要做的运算:+,-,*,/,//,%:")
        a = int(input("输入一个数a:"))
        b = int(input("输入一个数b:"))
        print("a" + operator + "b = ", arithmetic(a, b, operator))
    
    
    def operation2():
        print("现在进行 2.取模运算")
        print("请按照提示输入取模运算的两个操作数,注意两者均为整数")
        x = int(input("请输入被除数:"))
        y = int(input("请输入除数:"))
        while y == 0:
            print("输入错误!除数不能为0!")
            y = int(input("请重新输入整数除数:"))
        print(x % y)
    
    
    def operation3():
        print("现在进行 3.求幂运算")
        a = float(input("请输入底数:"))
        b = float(input("请输入指数:"))
        print("a**b = ", a ** b)
    
    
    
    def operation4():
        print("现在进行 4.计算简单的三角函数")
        operator = input("请输入你要做的运算:sin,cos,tan,asin,acos,atan:")
        x = float(input("请输入数值:"))
        x = x / 180 * math.pi
        print(operator + "x = ", act(x,operator))
    
    
    def operation5():
        print("现在进行 5.求阶乘")
        n = int(input("请输入一个整数:"))
        print(n,"! = ", math.factorial(n))
    
    
    def operation6():
        print("现在进行 6.解一元二次方程")
        a = float(input("请输入a:"))
        b = float(input("请输入b:"))
        c = float(input("请输入c:"))
        d = b*b - 4*a*c
        if d>=0:
            x1 = (-b+math.sqrt(d)) / (2*a)
            x2 = (-b-math.sqrt(d)) / (2*a)
            if d==0:
                print("X1 = X2 = "+str(x1))
            else:
                print("X1 = "+str(x1)+'	'+"X2 = "+str(x2))
        else:
            x1 = str(-b/(2*a)) + '+' + str(math.sqrt(-d)/(2*a)) + 'i'
            x2 = str(-b/(2*a)) + '-' + str(math.sqrt(-d)/(2*a)) + 'i'
            print("X1 = "+x1+'	'+"X2 = "+x2)
    
    
    flag = 1
    while flag == 1:
        print("欢迎使用计算器!")
        print("*" * 20)
        print("本计算器提供的功能有:")
        print("1.基本四则运算")
        print("2.取模运算")
        print("3.求幂运算")
        print("4.计算简单的三角函数")
        print("5.求阶乘")
        print("6.解一元二次方程")
        print("如您想退出使用,请输入-1")
        print("*" * 20)
        t = int(input("请从中选择您想要实现的功能,输入对应的数字"))
        if t == 1:
            operation1()
        elif t==2:
            operation2()
        elif t==3:
            operation3()
        elif t==4:
            operation4()
        elif t==5:
            operation5()
        elif t==6:
            operation6()
        flag = int(input("继续请输入1,退出请输入-1"))
    

    运行结果

    (三)实验过程中遇到的问题和解决过程

    • 问题1:对使用python函数不熟练,def NAME后面经常不加":",对于系统给出的报错信息不敏锐
    • 问题1解决方案:多写多总结,与c语言对比,总结差异
    • 问题2:在分别编写每一个功能代码时,有的直接写成函数形式,有return 标志的返回值;有的因较为简单,没有采用函数形式,采用的是print;最后将各部分汇总时很不方便,需要逐一排查
    • 问题2解决方案:这次因为都已写好,难以修改,只能逐一运行测试。以后编写时应尽量统一,我习惯在编写每个部分时不写成函数形式,而在最终整合时统一改成函数形式,这样比较方便统计需要传哪些参数

    (四) 其他(感悟、思考等)

    python和c还是经常在语法上搞混,但经过一段时间的学习,在一些二者的常见不同上已有了一定的敏锐性。本次实验最大障碍是对python中的函数调用掌握不足,什么时候return,什么时候直接在函数中打印有点迷糊。接下来一定继续努力,掌握透彻

    (五)参考资料

    (六)码云链接

    https://gitee.com/xu-yuan-20201324/python_use/blob/main/calculator.py

  • 相关阅读:
    剑指offer14-链表中倒数第k个结点
    剑指offer15-翻转链表
    Matlab矩阵操作
    CUDA线程
    CUDA编程前言
    ROS常用工具
    ROS理解参数服务器param demo
    ROS手动编写服务端和客户端service demo(C++)
    ROS手动编写消息发布器和订阅器topic demo(C++)
    ROS参数服务器(Parameter Server)
  • 原文地址:https://www.cnblogs.com/cqszxy2020/p/14707243.html
Copyright © 2011-2022 走看看