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

20252110史菲宇Python实验二

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

课程:《Python程序设计》
班级:2521
姓名:史菲宇
学号:20252110
实验教师:王志强
实验日期:2026年4月14日
课程性质:公选课

一、实验内容

1. 编写计算器程序

设计并完成一个功能完整(其实并不完整)的计算器应用程序,核心要求如下:
支持基础运算:加、减、乘、除、取模(%);
拓展功能运算:复数运算、幂运算(**)、对数运算(log)、开根号(sqrt)、阶乘(factorial);
输入规则说明:复数仅支持加、减、乘、除四种运算,阶乘运算仅对第一个输入数字生效;

2. 运行与调试练习

利用豆包(LLM)生成支持上述功能的计算器程序,运行生成的代码并验证功能完整性;对比自主编写的程序与 LLM 生成程序的差异,从代码结构、功能覆盖、异常处理等方面分析两者的优缺点。

二、实验过程及结果

(一)手敲计算器程序

  1. 代码实现
    基于 Python 基础语法和math库、cmath库(处理复数运算),编写了支持多类型运算的计算器程序,代码如下:
    image
    image
    image

代码实现结果:
(因为想实现复数运算,导致实数运算也有j(挠头))


image
image


image
image


image


image

取模
image


image

对数
image

开方
image

阶乘
image

(二)微量的健壮性验证

除法为0
image

不知道在干啥的符号错误
image

(三)LLM 生成计算器程序

利用豆包生成支持上述功能的计算器程序,运行生成的代码并验证功能完整性~
豆包大语言模型生成的计算器程序代码如下:
image
image
image

LLM的运行测试:
image
(明显更好看,也没有出现实数也带上了j的问题)

以下是git地址:
我自己的代码
豆包地代码

三、LLM 代码与个人代码对比分析及解决问题

  1. 自主编写代码功能
    基础运算:实现加、减、乘、除、取模,除法保留四位小数,除 0 异常处理;
    拓展运算:支持复数运算(加、减、乘、除)、幂运算、对数运算、开方、阶乘;
    补充:输入错误时给出友好提示;
    规则约束:明确复数仅支持四则运算,阶乘仅对第一个数生效,避免运算错误。
  2. LLM 生成代码功能
    基础与拓展运算:与自主代码一致,覆盖所有指定运算类型;
    额外功能:新增历史记录存储与查看功能,用户输入history可查看过往计算结果;
    优化处理:实数结果自动去除虚部(如5.0+0j显示为5.0),运算结果保留 2 位小数,提升界面整洁度;
    异常处理:针对各类输入错误(非数字、除 0、复数不支持运算等)给出更精准的错误提示。
  3. LLM 生成代码的优点
    功能更丰富:自主代码仅实现核心运算逻辑,LLM 代码额外增加历史记录查看功能,提升了程序的实用性和交互性;
    代码更规范:变量命名更高级(英语太好了),代码可读性更强;
    异常处理更完善:针对复数运算、对数定义域、除 0 等场景的异常处理更全面,错误提示更精准;
    界面更好看

问题

不知道复数如何转实数、开方逻辑难、不会对数运算

解决方案

查阅资料(其实问豆包)后发现,用real、cmath.log()等基础公式可以解决大部分问题,开方逻辑巧妙运用(1/num2)做指数。

四、实验感悟与思考

1. 编写代码要细致

编写代码时,要注意很多,传参数量,对函数健壮性的考虑,用到循环时的条件判断。

2. 要耐心

就算不停的报错、修改,也要认真完成每一行的编写,不要暴躁,阿弥陀佛。

五、参考资料

1. 书籍资料

  • 《程序设计与数据结构教程(第二版)》
  • 《程序设计与数据结构教程(第二版)》学习指导

2. 官方资料

  • Python官方内置函数库文档
http://www.jsqmd.com/news/639425/

相关文章:

  • 探寻靠谱的定制衣柜品牌,唐家定制衣柜厂家直销性价比如何 - myqiye
  • AI手势识别与追踪镜像体验:无需GPU,CPU秒级检测21个手部关键点
  • 前端精读周刊:终极Web Workers多线程编程实战指南
  • LeetCodehot100-78 子集
  • 用STM32状态机搞定多按键复用:从洗衣机控制面板到你的项目实战
  • ESP32连接HC-SR04超声波模块,这个5V电平转换的坑你踩过吗?
  • 从零开始:用Rainmeter打造个性化Windows桌面的完整指南
  • 深度探索开源工具:实战应用《怪物猎人世界》游戏数据叠加层
  • Android系统性能优化:工程师指南与面试准备
  • Win11Debloat终极指南:三分钟彻底优化Windows系统,性能飙升40%
  • 公司电脑被管控?离线搞定瑞萨RZ/N2L开发环境(e2_studio + FSP + GCC ARM)
  • Z-Image-Turbo_Sugar脸部Lora应用实践:为独立设计师提供AI面部风格参考图
  • KMS_VL_ALL_AIO:Windows和Office智能激活解决方案
  • 3分钟掌握Windows风扇智能控制:FanControl终极指南解决电脑噪音与散热难题
  • Qwen3-ASR-1.7B与数据库集成:语音识别结果存储与检索方案
  • 当孩子面临情绪问题时,如何有效提升注意力和管理冲动行为?
  • Qwen3.5-2B模型解决运维难题:403 Forbidden等常见错误排查
  • AI专著撰写全流程:工具深度解读,助你轻松产出优质专著
  • 2026工业级实战:C#上位机+YOLOv11+ByteTrack实现产线多目标跟踪与PLC联动控制
  • 端侧AI工程师技术开发指南
  • 雷达信号处理 python实现(二)相干与非相干积累 带宽与分辨率的关系
  • 【无人机】1.从零编译Betaflight/Cleanflight固件:针对STM32F103的实战指南
  • 5分钟掌握本地视频字幕提取:Video-subtitle-extractor终极指南
  • TurboDiffusion快速部署:基于Wan2.1/Wan2.2,开机即用免配置
  • 从零到一:RK3576开发板固件烧录全流程实战解析
  • Ostrakon-VL-8B数据库集成应用:构建可检索的多模态知识库
  • OneinStack备份与恢复:7种云存储方案完整教程
  • 【2026年最新600套毕设项目分享】畅阅读微信小程序(30050)
  • 软件构建管理化的编译打包流程
  • WeMod Patcher终极指南:3分钟解锁WeMod Pro高级功能的完整教程