20241227曹鹏泰 《Python程序设计》实验二报告

学号: 20241227《Python程序设计》实验二报告
课程:《Python程序设计》
班级: 2412
姓名: 曹鹏泰
学号:20241227
实验教师:王志强
实验日期:2025年3月26日
必修/选修: 公选课

一.实验内容:
1.设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。
2.考核基本语法、判定语句、循环语句、逻辑运算等知识点。

二. 实验要求:
创建工程项目,使用Python语言实现具体的操作运算,并完成程序调试和运行,代码托管到码云。
(注:在华为ECS服务器(OpenOuler系统)和物理机(Windows/Linux系统)上使用VIM、PDB、IDLE、Pycharm等工具编程实现。本实验在pycharm上完成)

三. 实验过程及结果:(https://gitee.com/uchiha-p/xiao-organization.git;)
1.实验基础代码和结果:(上课跟老师一起敲的)
代码:

import math
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 logab(a,b):
    return math.log(a,b)

flag = True
while flag:
    if input("请问:需要复数(1)还是整数(2)运算?\n")=="1":
        num1 = complex(input("请输入一个数:"))
        num2 = complex(input("请输入另一个数:"))
    else:
        num1 = int(input("请输入一个数:"))
        num2 = int(input("请输入另一个数:"))
    choice = input("请输入运算符(+-*/ log):")
    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以",num2,"为底",num1, "的对数 = ", logab(num1, num2))
        conti = input("是否继续?Y/N\n")
    if conti == "Y" or conti == "y":
        flag = True
    else:
        flag = False

结果:

2.实验升级代码:(增加了实现三角函数运算的功能)
'''
三角函数计算器
制作者:曹鹏泰
发行时间:3/30
'''

import math

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 logab(a, b):
    return math.log(a, b)

flag = True
while flag:
    print("请选择要进行的操作:")
    print("a. 进行复数或整数的运算(+-*/ log)")
    print("b. 进行三角函数的计算(sin/cos/tan)")
    operation_choice = input("请输入选项(a/b):")

    if operation_choice == "a":
        if input("请问:需要复数(1)还是整数(2)运算?\n") == "1":
            num1 = complex(input("请输入一个数:"))
            num2 = complex(input("请输入另一个数:"))
        else:
            num1 = int(input("请输入一个数:"))
            num2 = int(input("请输入另一个数:"))
        choice = input("请输入运算符(+-*/ log):")
        if choice == "+":
            print(f"{num1} {choice} {num2} = {Csum(num1, num2)}")
        elif choice == "-":
            print(f"{num1} {choice} {num2} = {Csub(num1, num2)}")
        elif choice == "*":
            print(f"{num1} {choice} {num2} = {Cmulti(num1, num2)}")
        elif choice == "/":
            print(f"{num1} {choice} {num2} = {CDiv(num1, num2)}")
        elif choice == "log":
            print(f"log以{num2}为底{num1}的对数 = {logab(num1, num2)}")
    elif operation_choice == "b":
        print("请选择要计算的三角函数:")
        print("1. 正弦(sin)")
        print("2. 余弦(cos)")
        print("3. 正切(tan)")
        trigonometric_choice = input("请输入选项(1/2/3):")

        angle = float(input("请输入角度值:"))  #此处注意要将角度值转换成弧度制
        radian = math.radians(angle)  #math库中的三角函数是弧度的

        if trigonometric_choice == '1':
            result = math.sin(radian)
            print(f"{angle}度的正弦值是:{result}")
        elif trigonometric_choice == '2':
            result = math.cos(radian)
            print(f"{angle}度的余弦值是:{result}")
        elif trigonometric_choice == '3':
            result = math.tan(radian)
            print(f"{angle}度的正切值是:{result}")
        else:
            print("无效的选项,请重新运行程序。")
    else:
        print("无效的选项,请重新运行程序。")
        continue

    conti = input("是否继续?Y/N\n")
    if conti == "Y" or conti == "y":
        flag = True
    else:
        flag = False

结果:



3.实验比较:
(C语言中计算sin(x)的代码)

#include <stdio.h>
#include <math.h>

// 计算阶乘
double factorial(int n) {
    if (n == 0 || n == 1)
        return 1;
    else
        return n * factorial(n - 1);
}

// 计算sin(x)
double sin_x(double x) {
    double sum = 0;
    int n = 0;
    double term;
    do {
        term = pow(-1, n) * pow(x, 2 * n + 1) / factorial(2 * n + 1);
        sum += term;
        n++;
    } while (fabs(term) >= 1e-6);  // 设置精度,当项的绝对值小于1e-6时停止
    return sum;
}

int main() {
    double x;
    printf("请输入x的值:");
    scanf("%lf", &x);
    double result = sin_x(x);
    printf("sin(%.2lf) = %.4lf\n", x, result);
    return 0;
}

经过比较发现python,永远的神!

三.实验中遇到的问题和解决方法:
1.总是将复数(1+j)写成(1+i);
解决方法:要牢记python中的复数用j。
2.if 的判断太多,与函数调用夹在一起,看的很难受;
解决方法:多加练习,争取熟练掌握这几种语句。
3.对python中的math库不太了解,导致直接将角度值作为函数参数,得不到正确的运算结果。
解决方法:

import math
angle = 90  # 假设角度为90度
radian = math.radians(angle)
print(radian)

四.其他(感悟、思考等)
1.功能拓展:当前程序已包含了基本的数学运算和三角函数计算,可以考虑加入更多复杂的数学函数,如指数运算、开方运算、反三角函数等。
2.同时,可以支持更多的数据类型,如分数、矩阵运算等。此外,还能引入图形化界面,让程序操作更加直观便捷。

五.参考资料
1.《makedown使用语法》
2.《零基础学python》

posted @ 2025-03-13 20:31  20241227曹鹏泰  阅读(8)  评论(0)    收藏  举报