20203114 实验二《Python程序设计》实验报告
# 学号 20203114张晨曦《Python程序设计》实验二报告
课程:《Python程序设计》
班级: 2031
姓名: 张晨曦
学号:20203114
实验教师:王志强
实验日期:2022年3月31日
必修/选修: 公选课
## 1.实验内容
-
设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。
- 考核基本语法、判定语句、循环语句、逻辑运算等知识点。
## 2. 实验过程及结果
- 设计思路:首先确定设计目标,设计一个有两种模式——普通、科学,7种功能——实数与负数加减乘除、求余、取整、幂、阶乘、三角函数运算的计算器;其次确定设计方法,主要使用判断语句、循环语句,逻辑运算函数等实现功能。
- 代码 :
''' 项目名称:计算器 学号:20203114 姓名:张晨曦 日期:2022.4.6 ''' import math def add(num_1, num_2): #加法运算 answer = num_1 + num_2 return answer def minus(num_1, num_2): #减法运算 answer = num_1 - num_2 return answer def multi(num1, num2): #乘法运算 answer = num1 * num2 return answer def div(num1, num2): #除法运算 answer = num1 / num2 return answer print('------------------') print('| 欢迎使用本计算器 |') print('| 0:普通计算器 |') print('| 1:高级计算器 |') print('------------------') mode_flag = int(input('请选择计算器模式:\n')) #选择计算器模式 while 1: #整个计算的循环,若不break,则一直计算 if mode_flag == 0: #选择计算器模式 a = int(input('请输入操作数a:')) #操作数输入 op = (input('请选择运算类型:\n1:+\n2:-\n3:*\n4:/\n')) #计算类型选择 b = int(input('请输入操作数b:')) if op == '1': print(a, '+', b, '=', add(a, b)) elif op == '2': print(a, '-', b, '=', minus(a, b)) elif op == '3': print(a, '*', b, '=', multi(a, b)) elif op == '4': print(a, '/', b, '=', div(a, b)) else: print('输入数字无效,请重新输入') else: #选择计算器模式 op = input('请选择运算类型:\n' '0:复数+\t1:复数-\t2:复数*\t3:复数/\n' '4:求余\t5:取整\t6:幂\t7:阶乘\n' '8:三角函数运算\n') #选择运算类型 if '0' <= op < '4': #虚数四则运算 real_a = int(input('请输入第一个复数的实部')) #虚数输入 false_a = int(input('请输入第一个复数的虚部')) a = complex(real_a, false_a) #利用函数将输入数转化为虚数 real_b = int(input('请输入第二个复数的实部')) false_b = int(input('请输入第二个复数的虚部')) b = complex(real_b, false_b) if op == '0': print(a, '+', b, '=', add(a, b)) elif op == '1': print(a, '-', b, '=', minus(a, b)) elif op == '2': print(a, '*', b, '=', multi(a, b)) elif op == '3': print(a, '/', b, '=', div(a, b)) elif '4' <= op < '6': a = int(input('请输入第一个操作数:')) b = int(input('请输入第二个操作数:')) if op == '4': print(a, '%', b, '=', a % b) #求余运算 elif op == '5': print(a, '//', b, '=', a//b) #取整运算 elif op == '6': a = int(input('请输入底数:')) b = int(input('请输入指数:')) print(a, '的', b, '次幂为:', a**b) #幂运算 elif op == '7': factorial_num = int(input('请输入所要计算阶乘的数:')) print(factorial_num, '的阶乘为:', math.factorial(factorial_num)) #阶乘求解 elif op == '8': #三角函数运算 angle_op = input('请输入运算类型:sin、cos、tan\n') angle_num = int(input('请输入需计算三角函数的角度值:\n'))#获取弧度值 radian = math.radians(angle_num) if angle_op == 'sin': print(angle_num, '正弦值为:', math.sin(radian)) elif angle_op == 'cos': print(angle_num, '余弦值为', math.cos(radian)) elif angle_op == 'tan': print(angle_num, '正切值为', math.tan(radian)) else: print('输入操作类型错误,请重新输入') else: print('输入数字无效,请重新输入') print('>>>>>>>请问您是否继续进行运算?') choice_quit = input('Y:继续运算\nN:退出运算') if choice_quit == 'N': #退出整个循环,结束计算 print('Thanks for your use!') break else: print('请问您是否更换计算器模式?') choice_mode = input('Y:是\nN:否') if choice_mode == 'Y': mode_flag = ~mode_flag #取反更改计算模式
码云地址:https://gitee.com/z-cx/conculator
- 运行结果:
## 3. 实验过程中遇到的问题和解决过程
- 问题1:不知道三角函数运算函数。
- 问题1解决方案:通过百度查找解决该问题。
- 问题2:complex函数理解不透彻,导致应用不熟练。
- 问题2解决方案:通过网上查阅资料,熟悉complex用法。
- 问题3:阶乘初步考虑使用循环实现,但想寻求一种更简单的方法,比如函数。
- 问题3解决方案:通过百度,查找到阶乘函数,将复杂代码缩减至2行。
- 问题4:程序运行过程中发现三角函数的运算无法正常进行,程序总是会异常结束。
- 问题4解决方案:首先设置断点进行debug,发现在字符串比较过程中出现问题;然后通过百度字符串比较方式,发现字符串比较首先比较第一位的ascii值,若第一位可以比较出来,则后续不再进行比较。通过更改运算符代表数,问题得到解决。
## 其他(感悟、思考等)
debug对于代码调试十分快速有效。在先前学习C的过程中,对于debug的了解并不深入,从未用过,调试全部依靠自己查找;现在熟练掌握debug后,代码调试变得很轻松。
一个服务于他人的代码需做到尽可能完备,站在对方角度思考问题,才可能使代码功能性更好。
具备多种功能的代码编写需首先在大脑中形成一个整体框架,包括在哪里循环,在哪里判断,如此可保证代码编写效率。