20241415 2024-2025-2 《Python程序设计》实验二报告

20241415 2024-2025-2 《Python程序设计》实验二报告

课程:《Python程序设计》
班级: 2414
姓名: 赵邵宁
学号:20241415
实验教师:王志强
实验日期:2025年3月26日
必修/选修: 公选课

1.实验内容

(1)设计并完成一个完整的应用程序,完成加、减、乘、除、取对数与模等运算,功能多多益善。

(2)考核基本语法、判定语句、循环语句、逻辑运算等知识点。

2. 实验过程及结果

(1)根据实验的要求,可以先设计对整数的加减乘除取对数的功能,运用课上所学的函数知识:

同时提示用户输入数据和计算方式,运用分支结构:

(2)接着可以考虑将复数的运算加入计算器中,此时就需要用分支结构提醒用户区分运算的是整数还是负数:

同时注意:python中复数的类型为complex,且输入的时候虚部是 j 而不是我们习惯使用的 i

(3)在此基础上我们可以进一步丰富计算器的功能,引入整数的取对数运算、三角函数运算和乘方运算:

注意:对数运算和三角函数运算需要提前引入数学库(import math)

(4)接着,我们需要考虑多次使用计算器的情况,因此,可以先设置一个无限循环:

在每次运算完后再提示用户是否还要继续使用计算器:

(5)最后我们可以在代码中加入个性化的部分,如:

(6)综上,整个计算器程序的代码为:

以下是将你提供的Python代码转化为Markdown格式的内容:

import math
print("""
欢迎使用功能强大,应有尽有的计算器!
版权:ZSN
开发时间:2025.3.26
考试的时候不能用计算器哦~
""")

def Csum(num1, num2):
    return num1 + num2


def Csub(num1, num2):
    return num1 - num2


def Cmulti(num1, num2):
    return num1 * num2


def Cdiv(num1, num2):
    if num2 == 0:
        print("除数不能为0")
        return 0
    return num1 / num2


def Crem(num1, num2):
    if num2 == 0:
        print("取余运算中除数不能为0")
        return 0
    return num1 % num2

def logab(a, b):
    return math.log(a, b)


def sin_cal(num):
    return math.sin(num)


def cos_cal(num):
    return math.cos(num)


def tan_cal(num):
    if math.cos(num) == 0:
        print("正切函数分母不能为0")
        return 0
    return math.tan(num)


def power_cal(num1, num2):
    return num1 ** num2


flag = True
while flag:
    if input("请问需要复数(1)还是整数(2)运算?") == "1":
        num1 = complex(input("请输入一个数:"))
        num2 = complex(input("请输入另一个数:"))
        choice = input("请输入运算符(+-*/%**): ")
        if choice == "+":
            print("num1", choice, "num2 = ", Csum(num1, num2))
        elif choice == "-":
            print("num1", choice, "num2 = ", Csub(num1, num2))
        elif choice == "*":
            print("num1", choice, "num2 = ", Cmulti(num1, num2))
        elif choice == "/":
            print("num1", choice, "num2 = ", Cdiv(num1, num2))
        elif choice == "%":
            print("num1", choice, "num2 = ", Crem(num1, num2))
        elif choice == "**":
            print("num1", choice, "num2 = ", power_cal(num1, num2))
        conti = input("是否继续?Y/N:")
        if conti == "Y" or conti == "y":
            flag = True
        else:
            flag = False
    else:
        num1 = int(input("请输入一个数:"))
        num2 = int(input("请输入另一个数:"))
        choice = input("请输入运算符(+-*/log%sin cos tan**): ")
        if choice == "+":
            print("num1", choice, "num2 = ", Csum(num1, num2))
        elif choice == "-":
            print("num1", choice, "num2 = ", Csub(num1, num2))
        elif choice == "*":
            print("num1", choice, "num2 = ", Cmulti(num1, num2))
        elif choice == "/":
            print("num1", choice, "num2 = ", Cdiv(num1, num2))
        elif choice == "log":
            print("log以", num1, "为底", num2, "的对数= ", logab(num2, num1))
        elif choice == "%":
            print("num1", choice, "num2 = ", Crem(num1, num2))
        elif choice == "sin":
            print("sin(", num1, ") = ", sin_cal(num1))
        elif choice == "cos":
            print("cos(", num1, ") = ", cos_cal(num1))
        elif choice == "tan":
            print("tan(", num1, ") = ", tan_cal(num1))
        elif choice == "**":
            print("num1", choice, "num2 = ", power_cal(num1, num2))
        conti = input("是否继续?Y/N:")
        if conti == "Y" or conti == "y":
            flag = True
        else:
            flag = False

(7)实验结果如下:

(8)最后将代码上传至Gitee


https://gitee.com/zhaoshaoning/python.git

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

  • 问题1:除法和tan运算时有时候会报错
  • 问题1解决方案:检查发现除法和tan的运算对数据有要求,除数不能为零,正切分母不能为0,需要在分支中加入if语句判断是否满足运算条件

其他(感悟、思考等)

编写这次实验的计算器程序是一个从小到大,从简单到复杂的过程,从最基础的功能到逐步扩充更高级的运算,这让我学会了怎么把相对复杂的问题拆解成每一个部分进行解决。同时这次实验也帮助我巩固了循环、分支、函数等知识,收获很多。

参考资料

《零基础学Python》

《Python编程从入门到实践》

posted @ 2025-04-06 22:19  雾岛岛岛  阅读(52)  评论(0)    收藏  举报