20241321 2024-2025-2 《Python程序设计》实验二报告
学号 2024-2025-2 《Python程序设计》实验x报告
课程:《Python程序设计》
班级: 2413
姓名: 顾创
学号:20241321
实验教师:王志强
实验日期:2025年3月26日
必修/选修: 公选课
一.实验内容
1.设计并完成一个完整的计算器,完成加减乘除模等运算,功能多多益善。
2.考核基本语法、判定语句、循环语句、逻辑运算等知识点。
3.创建工程项目,使用Python语言实现具体的操作运算,并完成程序调试和运行,代码托管到码云。
二. 实验过程及结果
1.代码设计目标:
能尽可能实现计算机的基本功能。
2.代码最终功能:
(1)数据类型支持复数和整数。
(2)运算支持加+,减-,乘 *,除 /,对数运算 log ,乘方运算**,取余 %,余弦 cos 正弦sin正切 tan运算,||取模等功能。
(3)计算结果按照python保留小数。
(4)如果用户输入错误,则会提醒用户重新输入。
3.重点代码解析
(1)首先通过选择语句控制复数还是整数,放在开头,减少重复:

(2)其次定义运算函数,注意先标注import math,同时注意不符合运算规则的运算(如分母为0等)

(3)通过if else分支语句分别输出每种计算:

(4)最后通过while函数循环,直到用户输入no为止:

4.完整代码
import math
def Csum(num1,num2):
return num1+num2
def Csub(num1,num2):
return num1-num2
def Cmulti(num1,num2):
return num1*num2
def power_cal(num1, num2):
return num1 ** num2
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 Cdiv(num1,num2):
if(num2==0):
print("分母不能为0")
return 0
else:
return num1/num2
def logab(a,b):
return math.log(a,b)
def Crem(num1, num2):
if num2 == 0:
print("取余运算中除数不能为0")
return 0
return num1 % num2
def mo(num):
return abs(num)
#abs为复数取模公式
print("""
欢迎使用计算机,本计算机功能众多;
可支持整数的 加+,减-,乘 *,除 /,对数运算 log ,乘方运算**,取余 %,余弦 cos 正弦sin正切 tan运算;
也可支持复数的+,减-,乘*,除/ ,乘方**, ||(模运算)运算。
创建者:GC
""")
flag=True
while flag:
if input("请选择复数(1)还是整数(2)\n")=="2":
num1=int(input("请输入一个数"))
num2=int(input("请输入另一个数"))
choice = input("请选择 加+,减-,乘 *,除 /,对数运算 log ,乘方运算**,取余 %,余弦 cos 正弦sin正切 tan运算")
else :
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 == "log":
print("log以", num1,"为底",num2,"的对数为", logab(num2, num1))
elif choice == "**":
print("num1", choice, "num2 = ", power_cal(num1, num2))
elif choice == "%":
print("num1", choice, "num2 = ", Crem(num1, num2))
elif choice=="sin":
print(choice,"num1=",sin_cal(num1),"\n",choice,"num2=",sin_cal(num2))
elif choice == "cos":
print(choice, "num1=", cos_cal(num1), "\n", choice, "num2=", cos_cal(num2 ))
elif choice == "tan":
print(choice, "num1=", tan_cal(num1), "\n", choice, "num2=", tan_cal(num2))
elif choice=="||":
print("num1的模为",mo(num1),"num2的模为",mo(num2))
conti=input("如果还要继续,请输入y或Y,否则输入n")
if conti=="Y" or conti=="y":
flag=True
else:
flag=False
5.代码调试:
(1)发现问题tan函数输入显示错误

(2)在tan函数处设置断点

(3)输入数值后点单步执行,发现系统在进入tan函数后报错,
说明tan函数不对。

(4)经检查发现误把math.cos(num)写成math.num改正过来。

(5)重新检验,发现结果正确:
6.代码运行:



7.上传至码云:
(1)写完代码后点击修正提交并推送:

(2)推送成功,在码云仓库中查看:

(3)码云代码链接:https://gitee.com/gu-chuanggo/PythonHomework/commit/21c46a3784a9ce82740750086e784011312a3b97
三. 实验过程中遇到的问题和解决过程
- 问题1:不会复数求模公式
- 问题1解决方案:查询deepseek,得知
abs是求模的原生函数,所以前面也不能加math. - 问题2:复数和整数的选择重复
- 问题2解决方案:老师讲解,得知开头分流选择运算即可。
- 问题3:不知道复数的运算法则
- 问题3解决方案:询问ai,或取乘除模等运算。
其他(感悟、思考等)
通过python代码写计算机,要注意复杂数据的处理以及运算间的逻辑规律。
合理使用AI,可以事半功倍。

浙公网安备 33010602011771号