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

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

课程:《Python程序设计》
班级: 2421
姓名: 邹清楠
学号:20242126
实验教师:王志强
实验日期:2025年3月26日
必修/选修: 公选课

1. 实验内容

  • 设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善

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

2. 实验过程及结果

1. 导入数学运算库

import math

2.定义函数

这里定义函数是因为这样模块化的程序可以更加便捷地编写和维护,添加新运算功能时更加方便

def (函数名)(变量)

例如一个计算加法的函数:

def plus(int num1,int num2):
    return num1 + num 

这样一来,在调用函数的时候,只需输入加数1和加数2,函数就会返回得到的和
以此类推,我们还可以得到其他基本运算函数:

def JIAN(num1, num2):
    return num1 - num2
def CHENG(num1, num2):
    return num1 * num2

值得注意的是,在除法中除数不能为零,所以,在函数中应当加入判断环节

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

3.主体部分

首先,提示用户输入运算符:

choice = input("请输入运算符(+-*/):")

随后提示输入第一个和第二个数:

num1 = int(input("请输入第一个数字:"))
num2 = int(input("请输入另外一个数字:"))

随后使用if/elif来根据运算符进行运算:

if choice == '+':
    print("num1 + num2 =",JIA(num1,num2))
elif choice == '-':
    print("num1 - num2 =",JIAN(num1,num2))
elif choice == '*':
    print("num1 * num2 =",CHENG(num1,num2))
elif choice == '/':
    if CHU(num1,num2) == 0:#与除法函数对应,若除法函数返回零则报错
    print("num / num2 =",CHU(num1,num2))
else:
    print("运算符不合法!") #如果用户输入的不是加减乘除的任何一个运算符,则报错

4.进阶部分

一次计算有时候是不够的,所以我们不妨将程序从外面套上一层循环:

while 1:
num1 = int(input("请输入第一个数字:"))
num2 = int(input("请输入另外一个数字:"))
choice = input("请输入运算符(+-*/):")
if choice == '+':
    print("num1 + num2 =",JIA(num1,num2))
elif choice == '-':
    print("num1 - num2 =",JIAN(num1,num2))
elif choice == '*':
    print("num1 * num2 =",CHENG(num1,num2))
elif choice == '/':
    if CHU(num1,num2) == 0:
        break                      #这里及以后出现的break是为了跳出循环,达到报错推出程序的目的
    print("num / num2 =",CHU(num1,num2))
else:
    print("运算符不合法!")
    break
if input("是否继续? Y/N:" ) == 'N':
    break

其次,还可以添加不同的运算,和上面的判断符一样,我添加了复数和对数运算,最终得到的程序如下:

import math

def JIA(num1, num2):
    return num1 + num2
def JIAN(num1, num2):
    return num1 - num2
def CHENG(num1, num2):
    return num1 * num2
def CHU(num1, num2):
    if num2 == 0:
        print("除数不能为零!")
        return 0
    return num1 / num2
def loge(num1, num2):
    return math.log(num2,num1)



while 1:
    decide = int(input("请问需要复数(1)还是整数(2)运算还是对数(3)运算?:"))
    if  decide == 1:
        num1 = complex(input("请输入第一个数字:"))
        num2 = complex(input("请输入另外一个数字:"))
        choice = input("请输入运算符(+-*/):")
        if choice == '+':
            print("num1 + num2 =",JIA(num1,num2))
        elif choice == '-':
            print("num1 - num2 =",JIAN(num1,num2))
        elif choice == '*':
            print("num1 * num2 =",CHENG(num1,num2))
        elif choice == '/':
            if CHU(num1,num2) == 0:
                break
            print("num / num2 =",CHU(num1,num2))
        else:
            print("运算符不合法!")
            break
        if input("是否继续? Y/N:" ) == 'N':
            break     
    elif decide == 2:
        num1 = int(input("请输入第一个数字:"))
        num2 = int(input("请输入另外一个数字:"))
        choice = input("请输入运算符(+-*/):")
        if choice == '+':
            print("num1 + num2 =",JIA(num1,num2))
        elif choice == '-':
            print("num1 - num2 =",JIAN(num1,num2))
        elif choice == '*':
            print("num1 * num2 =",CHENG(num1,num2))
        elif choice == '/':
            if CHU(num1,num2) == 0:
                break
            print("num / num2 =",CHU(num1,num2))
        else:
            print("运算符不合法!")
            break
        if input("是否继续? Y/N:" ) == 'N':
            break
    elif decide == 3:
        num1 = int(input("请输入第一个数字:"))
        num2 = int(input("请输入另外一个数字:"))
        print("log(a,b)=",loge(num1,num2))
        if input("是否继续? Y/N:" ) == 'N':  #询问用户是否继续计算
            break

以下是运行截图:

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

  • 问题1:输入数字但是程序返回乱码
    问题1解决方案:进行输入时没有进行强制类型转换,将其转换为int类型可以解决问题
num1 = int(input("请输入第一个数字:"))
  • 问题2:如何进行复数运算?
    问题2解决方案:在python中,直接强制转换为complex类型即可

4.感悟和思考

  • 编写程序时,使用模块化的思想自定义若干函数,再在主函数中将自定义函数封装到一起,十分方便。当然,这样也存在着变量混淆的可能,需要在编写程序时多加注意

参考资料

posted @ 2025-04-02 18:50  Norreich  阅读(29)  评论(0)    收藏  举报