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

作业信息

这个作业属于哪个课程 2025年春全院公选Python (北京电子科技学院)
这个作业要求在哪里 实验二 计算器设计
这个作业的目标 设计并完成一个完整的计算器,完成加减乘除模等运算,功能多多益善
作业正文 本博客链接
课程名称 《Python程序设计》
班级 2413
姓名 苏子涛
学号 20241310
实验教师 王志强
实验日期 2025年3月26日
必修/选修 公选课

(一)实验内容

设计并完成一个完整的计算器,完成加减乘除模等运算,功能多多益善。

考核基本语法、判定语句、循环语句、逻辑运算等知识点
代码如下:
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 None
return num1 / num2
def logab(a, b):
if a <= 0:
print("真数必须大于0")
return None
if b == 0:
print("底数不等于0")
return None
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

运行结果如下:

(二)实验要求

创建工程项目,使用Python语言实现具体的操作运算,并完成程序调试和运行,代码托管到码云。

托管代码到gitee:

成功提交:

注:在华为ECS服务器(OpenOuler系统)和物理机(Windows/Linux系统)上使用VIM、PDB、IDLE、Pycharm等工具编程实现。

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

  • 问题1:在加入复数这个功能后运行时出错
  • 问题1解决方案:发现python的复数是a+bj而不是a+bi,这与平时数学学到的略有出入,需注意。
  • 问题2:刚开始往计算器中加入对数运算的时候运行结果出现问题,比如输入2和4本来用意是以2为底数结果应该是2,可运行结果是0.5
  • 问题2解决方案:X结果刚好与我预料的结果相反,可以推断出是底数与真数写反了,将num1和num2的位置对调后完成错误纠正。
    print("log以",num2,"为底" ,num1,"的对数=",logab(num1 , num2)) <-----这个是纠正后的结果。
  • ...

其他(感悟、思考等)

1.感受到了python这种高级语言和其他的高级语言一样,假如与平时的数学计算要实现同样的成果,在格式等方面有所微调,比如复数的虚部平时数学用的是i,而python用的是j。
所以说我们在学习python的过程中应该注重细节,不能凭感觉决定代码,要做到严谨,否则一个细微的差别就可能导致一整个庞然大物的程序报错无法运行。
2.python自学还是很重要。举个例子,无论是计算器代码编写还是之前的猜拳,其实在最后判断是否要再来一次的时候都要让用户判断,通过输入“Y”或“y”来重复循环。本次计算器代码是通过
【if conti == "Y" or conti == "y"】这种列举来实现大Y与小y的兼容,而其实只需要用
【这个是之前猜拳用的(自学版):replay = input("是否再玩一次?(y 继续,其他退出): ").strip().lower()】这样的,用.lower()将字符串中的所有大写字母转换为小写字母,就可以不用将大小写字母全部列举出来,而且.strip()可删除字符串开头和结尾的空白字符(包括空格、制表符 \t 、换行符 \n 等),增强了这个代码在用户输入方面的容错,所以说,课外的自学很重要,对于课内代码的撰写,简化有着很大帮助。

参考资料

脑子
脑子
还是脑子

posted @ 2025-03-31 19:08  诺奇布卡  阅读(23)  评论(0)    收藏  举报