2032402 2023-2024-2 《Python程序设计》实验二报告

2032402 2023-2024-2 《Python程序设计》实验二报告

课程:《Python程序设计》
班级: 2324
姓名:王艺瑶
学号:2032402
实验教师:王志强
实验日期:2024年3月31日
必修/选修: 公选课

1.实验内容

设计并完成一个完整的应用程序,实现加、减、乘、除、整除、模、正弦、余弦、正切、对数、指数、阶乘、复数运算。

2. 实验过程及结果

(1)程序编写:

print("-----Welcome to the computer!-----")
print("||       Copyright:BESTI        ||")
import math
def sum(a,b):
    return a+b
def sub(a,b):
    return a-b
def mul(a,b):
    return a*b
def mod(a,b):
    return a%b
def div(a,b):
    while (True):
        if b == 0:
            b = eval(input("b can't be 0,please enter b again:"))
        else:
            break
    return a/b
def flo(a,b):
    while (True):
        if b == 0:
            b = eval(input("b can't be 0,please enter b again:"))
        else:
            break
    return a//b
def fac(a):
    return math.factorial(int(a))
def pow(a,b):
    return math.pow(a,b)
def log(a, b):
    return math.log(b,a)
def sin(a):
    return math.sin(math.radians(a))
def cos(a):
    return math.cos(math.radians(a))
def tan(a):
    return math.tan(math.radians(a))
def complex(a,b):
    complexOpera = input('Enter the operation of complex(+-*/)')
    if complexOpera == '+':
        print("a+b = ", a+b)
    elif complexOpera == "-":
        print("a-b = ",a-b)
    elif complexOpera == "*":
        print("a*b = ",a*b)
    elif complexOpera == "/":
        print("a/b = ",a/b)
        while (True):
            if b == 0:
                b = eval(input("b can't be 0,please enter b again:"))
            else:
                break
    else:
        print("Invalid operator, please try again!")


flag = True
while(flag):
    operate = input("Please enter the operator,you can choose from(+ - * / % flo fac pow log sin cos tan com):")
    a = eval(input("Please enter a:"))
    b = eval(input("Please enter b:"))
    if operate == "+":
        print("a+b = ", sum(a, b))
    elif operate == "-":
        print("a-b = ",sub(a,b))
    elif operate == "*":
        print("a*b = ",mul(a,b))
    elif operate == "/":
        print("a/b = ",div(a,b))
    elif operate == "%":
        print("a%b = ",mod(a,b))
    elif operate == "flo":
        print("flo(a,b)= ",flo(a,b))
    elif operate == "fac":
        print("fac(a)=",fac(a),"fac(b)=",fac(b))
    elif operate == "pow":
        print("pow(a,b) = ",pow(a,b))
    elif operate == 'log':
        print("log a b (logarithm of b with base a)= ",log(a, b))
    elif operate == 'sin':
        print("sin(a)=",sin(a),"sin(b)=",sin(b))
    elif operate == 'cos':
        print("cos(a)=",cos(a),"cos(b)=",cos(b))
    elif operate == 'tan':
        print("tan(a)=",tan(a),"cos(b)=",tan(b))
    elif operate == 'com':
        complex(a,b)
    else:
        print("Invalid operator, please try again!")

    flag = False if input("Do you want to continue?").lower() == 'n' else True

print("Thank you for your using!")

(2)代码测试:

请添加图片描述
请添加图片描述
请添加图片描述

(3)代码上传:
由于之前操作过,当创建了新文件时,系统自动询问是否上传,选择“是”即可,接着勾选文件,点提交并推送。
在这里插入图片描述
请添加图片描述
请添加图片描述
可以查看到已经上传请添加图片描述

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

  • 问题1:虚数运算时报错
  • 问题1解决方案:虚部应用j表示而非i,且虚部的系数不能不写
  • 问题2:进行对数运算时不清楚两个参数分别代表什么
  • 问题2解决方案:math.log(a,b)表示以b为底求a的对数
  • 问题3:将a,b定义为int型难以进行复数运算
  • 问题3解决方案:使用eval 函数,它用于执行字符串形式的表达式,并返回表达式的结果,可以使用 eval 来执行包括复数运算在内的各种表达式。
  • 问题4:当执行完一次运算,系统询问是否继续时,输入Y/y,但退出了程序
  • 问题4解决方案:问题出在了flag = False if input("Do you want to continue?")=='N' or 'n' else True
    input("Do you want to continue?") == 'N'这部分会检查用户输入是否为 ‘N’。如果是,整个条件表达式将计算为 True,否则为 False。
    or 'n'这部分的问题在于 ‘n’ 是一个非空字符串,根据 Python 中的真值测试,任何非空字符串都被认为是 True。
    因此,这个条件表达式实际上是在做这样的判断:如果用户输入不是 ‘N’,则由于 or ‘n’ 总是为 True,整个条件表达式就为 True,于是 flag 被设置为 True,循环将继续。
    改为flag = False if input("Do you want to continue?").lower() == 'n' else True就正确了。

参考资料

gitee中的computer代码

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值