20213305 实验二《Python程序设计》实验报告

# 20213305 2021-2022-2 《Python程序设计》实验二报告

课程:《Python程序设计》
班级: 2133
姓名: 张桉源
学号:20213305
实验教师:王志强
实验日期:2022年4月5日
必修/选修: 公选课

 

##1.实验内容

·应用上课学到的python的基本运算,条件判断,逻辑语句,循环语句等编写BESTI计算器,功能多多益善。

·在加减乘除的基础上增三角函数,复数,进制之间的运算。

·将代码上传到Gitee

##2.实验过程及结果

--------------------------------------------------------代码-------------------------------------------------------------

import math #调用数学库
print("BESTI科学计算器")
flag=True
while flag==True:
    choice=input("请选择你要计算的类型(1表示实数类型;2表示虚数类型;3表示实数加虚数类型):\n")
    if choice=="1":
        print("如果你选用sin、cos、tan函数or进制,请将b值设定为1\n")
        print("如果选用与、或、非电路,a和b的值在0 or 1之间选择,且非电路的b值为1\n")
        op=input("请输入需要做的操作(+、-、*、/、%、a的b次方根、sin、cos、tan、十转二进制、十转八进制、十转十六进制、与、或、非、输入0代表退出):")
       
        if op=="0":
            break
        else:
            a=int(input("请输入第一个实数a\n"))
            b=int(input("请输入第二个实数b\n"))
    elif choice=="2":
        op=input("请输入需要做的操作(+、-、输入0代表退出):")
        if op=="0":
            break
        else:
            a=complex(input("请输入第一个虚数a\n"))
            b=complex(input("请输入第一个虚数b\n"))
    elif choice=="3":
        op=input("请输入需要做的操作(+、-、输入0代表退出):")
        if op=="0":
            break
        else:
            a=int(input("请输入第一个实数a\n"))
            b=complex(input("请输入第一个虚数b\n"))
    if op=="+":
            result=a+b
    elif op=="-":
            result=a-b
    elif op=="*":
            result=a*b
    elif op=="/":
            result=a/b
    elif op=="%":
            result=a%b  
    elif op=="a的b次方根":
            result=pow(a,b)
            print(str(a)+"的"+str(b)+"次方根"+"=",result,"\n")
            continue
    elif op=="sin":
            result=math.sin(a*3.1415927/180)
            print("sin"+str(a)+"=",result,"\n")
            continue
    elif op=="cos":
            result=math.cos(a*3.1415927/180)
            print("cos"+str(a)+"=",result,"\n")
            continue
    elif op=="tan":
            result=math.tan(a*3.1415927/180)
            print("tan"+str(a)+"=",result,"\n")
            continue
    elif op=="十转二进制":
            result=bin(a)
            print(str(a)+"的二进制"+"=",result,"\n")
            continue
    elif op=="十转八进制":
            result=oct(a)
            print(str(a)+"的八进制"+"=",result,"\n")
            continue
    elif op=="十转十六进制":
            result=hex(a)
            print(str(a)+"的十六进制"+"=",result,"\n")
            continue
    elif op=="与":
            if a==b:
               result=a
               print(str(a)+"和"+str(b)+"的与电路"+"=",result,"\n")
            else:
               result=0
               print(str(a)+"和"+str(b)+"的与电路"+"=",result,"\n")
               continue
    elif op=="或":
            if a==b:
               result=a
               print(str(a)+"和"+str(b)+"的或电路"+"=",result,"\n")
            else:
               result=1
               print(str(a)+"和"+str(b)+"的或电路"+"=",result,"\n")
               continue
    elif op=="非":
            if a==1:
               result=0
               print(str(a)+"的非电路"+"=",result,"\n")
            else:
               result=1
               print(str(a)+"的非电路"+"=",result,"\n")
               continue
    else:
            print("输入有误,请重新输入\n")
            continue
    print(str(a)+op+str(b)+ "=",result,"\n")
-----------------------------------------------------------结果----------------------------------------------------------------

 

 同时将代码上传到Gitee:

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

-问题一:最开始设计的计算器不够优化,尤其是计算复数的实部和虚部,分别计算比较麻烦

-问题一解决方案:可将实部与虚部同时输入。

-问题二:python的三角函数只能识别弧度,如果输入角度则出现错误。

-问题二解决方案:利用数学知识,弧度=(角度/180)*3.1415926.

-问题三:由于计算器代码行数比较多,找出错误需要很久。

-问题三解决方案:再次感受到了断点调试的优势,可节约大量时间。

##感悟,思考

虽然在老师的带领下设计了BESTI计算器,但是不太完美的一点是我并不会设计交互性的页面,以后可以学习相关知识,继续完善BESTI计算器。

 

posted @ 2022-04-06 12:38  2133张某  阅读(51)  评论(0编辑  收藏  举报