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

课程:《Python程序设计》
班级: 2019
姓名: 张中怀
学号:20193223
实验教师:王志强
实验日期:2021年5月8日
必修/选修: 公选课

1.实验内容

设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。
本次计算器包含内容:基本加减乘除四则运算,取余,取商,幂运算,三角函数运算,并在运算完成后询问是否继续。

2. 实验过程及结果

  • 基本四则运算

def add(a,b,operator):#加,减法
   if operator == "2":
            return a-b
   elif operator ==  "1":
       return a+b

def mul(a,b):  #乘法
    return a*b

def div(a,b):  #除法
    if b==0:
        print("Error!")
    else:
        return a/b
  • 求余,求商,幂运算

def mod(a,b): #求余
    return a % b

def power(a,b): #幂运算
    return a**b

def rem(a,b): #求商
    if b==0:
        print("Error!")
    else:
        return a//b
  •  三角函数

 number = int(input("1.sinx  2.cosx  3.tanx\n"))  # 三角函数种类算术
                c = float(input("请输入一个值(角度):\n"))
                d = math.radians(c)
                if number == 1:
                    answer = round(math.sin(d),2)
                elif number == 2:
                    answer = round(math.cos(d),2)
                elif number == 3:
                    answer = round(math.tan(d),2)
                else:
                    answer = "错误,请重新输入"
                print("答案为:", answer)

 

  •  阶乘

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

import math
def add(a,b,operator):#加,减法
   if operator == "2":
            return a-b
   elif operator ==  "1":
       return a+b

def mul(a,b):  #乘法
    return a*b

def div(a,b):  #除法
    if b==0:
        print("Error!")
    else:
        return a/b

def mod(a,b): #求余
    return a % b

def power(a,b): #幂运算
    return a**b

def rem(a,b): #求商
    if b==0:
        print("Error!")
    else:
        return a//b

flag =1
while flag == 1:
    operator = input("请输入:(1:加法,2:减法,3:乘法,4:除法,5:求余,6:求商,7:幂运算,8:三角函数,9:阶乘)\n")
    if '1'<=operator<='7':
        a = int(input("请输入一个数a:"))
        b = int(input("请输入一个数b:"))
        if operator == "1":
            print("a"+ '+' + "b = " ,add(a,b,operator))
        elif operator == "2":
            print("a" + '-' + "b = ",add(a,b,operator))
        elif operator == "3":
            print("a" + '*' + "b = ", mul(a,b))
        elif operator == '4':
            print("a" + '/' + "b = ", div(a,b))
        elif operator == "5":
            print("a" + '%' + "b = ", mod(a,b))
        elif operator == "6":
            print("a" + '//' + "b = ", rem(a,b))
        elif operator == "7":
            print("a" + '**' + "b = ", power(a,b))
        flag = int(input("继续(1)or退出(0)"))
    elif operator == '8':
                number = int(input("1.sinx  2.cosx  3.tanx\n"))  # 三角函数种类算术
                c = float(input("请输入一个值(角度):\n"))
                d = math.radians(c)
                if number == 1:
                    answer = round(math.sin(d),2)
                elif number == 2:
                    answer = round(math.cos(d),2)
                elif number == 3:
                    answer = round(math.tan(d),2)
                else:
                    answer = "错误,请重新输入"
                print("答案为:", answer)
    elif operator == '9':
                 n = int(input("请输入一个整数:"))
                 print(n, "! = ", math.factorial(n))
                 flag = int(input("继续(1)or退出(0)"))

 

  •  运行结果

 

 

 

 

3. 实验过程中遇到的问题和解决过程

        问题1:三角函数如何从角度转换为弧度时。

        解决措施:1.利用math函数库中的radians(x): 把x从角度转换为弧度。

                          2.利用公式: d = (c * (math.pi)/ 180.0)(c:输入的角度)

        问题2:实际计算中,如sin(raidians(30)),得出的不是0.5,而是0.4999。

        解决措施:用round函数四舍五入一下即可。

        问题3:计算阶乘用以前的方法过于复杂。

        解决措施:利用math函数库中专门计算阶乘的math.factorial(n))。

4.其他(感悟、思考等)

 本次实验的设计思路是,通过def进行各运算的设计,然后主函数实现输入,输出。其功能可以实现基本运算,并进行继续或退出的判断。

改进之处:可以通过qt进行界面的设计,让其完成UI界面的设计。

5.参考资料

 6.码云链接

https://gitee.com/zhang-zhonghuai/python_20193223.git

 

posted on 2021-05-08 17:01  Zzh拉钩  阅读(74)  评论(0编辑  收藏  举报