当前位置: 首页 > news >正文

20254220梁晋源《Python程序设计》实验二报告

课程:《Python 程序设计》
班级: 2542
姓名: 梁晋源
学号:20254220
实验教师:王志强
实验日期:2026年 4 月 7日
必修: 公选课

  1. 实验内容
    本次实验核心任务是使用 Python 语言编写一个多功能高级计算器程序,实现基础算术运算与数学函数运算功能。
    具体要求:
    支持加减乘除(+、-、*、/)、取模(%)、整除(//)、幂运算(^)、平方根(sqrt)运算;
    程序具备异常处理能力,能够判断除数为 0、负数开方等错误情况并给出提示;
    采用循环结构,支持用户连续进行多次计算,可自主选择退出程序;
    封装计算逻辑为独立函数,实现代码模块化设计。
  2. 实验过程及结果
    实验过程
    需求分析与思路设计
    首先明确计算器需要支持的运算类型,确定采用函数封装计算逻辑、循环实现连续计算的核心思路,导入 Python 内置math库用于实现平方根运算。
    代码编写步骤
    ① 导入math模块,为平方根运算提供支持;
    ② 定义calculate()函数,接收两个数字和一个运算符作为参数,通过多分支条件判断实现不同运算逻辑,同时添加除数为 0、负数开方的异常判断;
    ③ 编写主程序,打印程序说明和支持的运算符,提升用户体验;
    ④ 使用while True无限循环,实现用户输入、计算、输出结果的流程,通过用户输入判断是否退出循环;
    ⑤ 对输入的数字进行浮点型转换,保证计算精度,格式化输出计算结果。
    代码调试与优化
    测试各类运算功能,排查除数为 0、负数开方、不支持运算符等边界情况,优化提示语,让程序交互更友好。
    实验结果
    程序成功运行,实现了全部预期功能:
    正常完成加减乘除、取模、整除、幂运算,计算结果准确;
    输入除数为 0 时,输出错误:除数不能为0;输入负数开方时,输出错误:不能对负数开方;
    输入不支持的运算符时,提示不支持的运算;
    支持连续计算,输入y继续,输入n退出程序,运行稳定无报错。
  3. 实验过程中遇到的问题和解决过程
    问题 1:运行时报错NameError: name 'math' is not defined
    问题 1 解决方案:忘记导入math库,在代码开头添加import math语句,解决平方根函数调用报错问题。
    问题 2:输入sqrt运算时,程序要求必须输入第二个数,不符合平方根只需要一个数字的需求
    问题 2 解决方案:在程序提示语中说明sqrt 只需要输入第一个数,第二个数可随意,代码中不做强制限制,不影响运算结果。
    问题 3:除数为 0 时程序直接崩溃,无友好提示
    问题 3 解决方案:在除法运算的分支中添加if num2 == 0判断条件,返回错误提示字符串,避免程序异常终止。
    问题 4:负数进行平方根运算时,程序报错math domain error
    问题 4 解决方案:在sqrt运算分支中添加if num1 < 0判断,拦截非法输入并返回错误提示。
    其他(感悟、思考等)
    通过本次实验,我熟练掌握了 Python 函数定义、多分支条件判断、循环结构的使用,理解了代码模块化的优势,将计算逻辑封装为函数,让主程序更简洁清晰;
    学会了处理程序中的常见异常,比如除数为 0、数学运算定义域错误等,明白了编写程序不仅要实现功能,还要考虑用户的非法输入,提升程序的健壮性;
    体验了交互式程序的开发流程,从需求分析、代码编写到调试优化,完整走完了一个小项目的开发过程,感受到了 Python 语言简洁易用的特点;
    后续可以优化程序功能,比如添加括号运算、三角函数、保留小数位数等,让计算器更实用。
    参考资料
    《Java程序设计与数据结构教程(第二版)》
  • 《Java程序设计与数据结构教程(第二版)》学习指导
http://www.jsqmd.com/news/603988/

相关文章:

  • Win11Debloat系统优化完全指南:从诊断到长效管理的实践路径
  • 性能测试避坑指南:如何正确使用P90/P95/P99.9指标评估你的服务
  • 三亚汽车租赁哪家强?2026优质公司大揭秘,国内汽车租赁企业鑫通汽车租赁满足多元需求 - 品牌推荐师
  • 大话西游2经典单机版V8:一键架设+GM全功能+仙玉自由修改
  • 联想Thinkpad忘记Win10密码?不用PE盘!安全模式命令重置实测有效
  • ICDM 2024论文精读:MetaSTC如何用‘聚类+元学习’四两拨千斤,大幅提升预测效率?
  • Intel RealSense2 D455 Python环境配置避坑指南
  • 告别RLHF的复杂流程:用DPO在单张消费级显卡上微调你的Qwen2-7B模型
  • 2026年兰州自保温砌块厂家最新推荐榜:兰州匀质自保温砌块、匀质岩棉自保温砌块、岩棉断热自保温砌块厂家选择指南 - 海棠依旧大
  • 兰亭妙微产品可用性设计:尼尔森十大原则的真实案例拆解与应用指南 - ui设计公司兰亭妙微
  • 效率飙升:用快马AI为MobaXterm用户生成批量运维自动化脚本
  • 20254223崔之垚《Python程序设计》实验二报告
  • Quartus SignalTap调试实战:解决‘waiting for clock‘的5个关键检查点(附引脚配置技巧)
  • 从一次服务器宕机说起:我是如何用Nacos 2.5.1 + MySQL + CentOS 7搭建稳定微服务注册中心的
  • 用Verilog HDL在FPGA上实现一个带倒计时的智能交通灯(附完整代码与仿真)
  • Android无障碍神器GDK:一键跳过开屏广告(极简配置)
  • 我亲测8款AI论文工具,靠图灵论文助手效率飙升告别熬夜 - 麟书学长
  • 一次 MySQL 主从延迟引发的订单状态不一致故障复盘
  • VMagicMirror终极指南:零设备虚拟形象实时驱动,开启虚拟互动新时代
  • 告别坐标混乱!用Global Mapper Pro把奥维地图下载的影像一键转成CGCS2000坐标系
  • vLLM与昇腾协同部署全攻略:从环境适配到性能压测的实践指南
  • 鸿蒙物联网开发教程-第五章 生命周期和状态管理
  • 应急响应自动化:OpenClaw+SecGPT-14B处理安全事件的完整流程
  • 八大网盘直链下载神器:LinkSwift让你的下载效率提升50倍
  • 物联网硬件开发必知:电阻、电容、电感、二极管、三极管的5种实用电路设计技巧
  • 新员工Onboarding优化:三个月成为生产力
  • 给开发者的安全自查清单:你的Spring Boot应用真的防住了Log4j2、Fastjson和Shiro漏洞吗?
  • Qdrant Scroll API性能调优指南:如何用Slice分片和Payload索引加速百万级数据导出
  • uniapp富文本解析实战:解决video标签渲染与样式优化
  • Windows 自带搜索太慢?装上 Everything,找文件快 10 倍!