20252110史菲宇Python实验二
2025-2026-2 《Python程序设计》实验二报告
课程:《Python程序设计》
班级:2521
姓名:史菲宇
学号:20252110
实验教师:王志强
实验日期:2026年4月13日
课程性质:公选课
一、实验内容
本次实验围绕计算器程序设计展开,主要包含两个关键任务:
-
独立设计并编码实现一款基础计算器,涵盖加、减、乘、除、取模等核心数学运算,并基于此基础功能进行额外拓展,完善程序实用性;
-
利用大型语言模型(LLM)生成一款功能更全面的计算器程序,对其代码结构、运算逻辑进行细致分析,与自身编写的基础程序进行多维度对比,梳理两者在功能、结构、易用性等方面的优劣之分与具体差异。
二、实验过程及结果
(一)这是我的基础计算器程序
1. 代码实现:
实现了一个基础计算器,支持加减乘除、取模、幂运算、对数、开方、阶乘等功能,可处理实数与复数运算,并具备基本的异常判断能力。
代码如下:


全功能运行结果
加法运算

减法运算

乘法运算

除法运算

取模运算

幂运算

对数运算

开根号运算

阶乘运算

复数加法

除法(除数为 0)

无效运算符

2. 代码特点和不足:
采用函数模块化设计,结构清晰易懂,支持实数与复数运算,实现了多种基础与拓展数学运算,并具备简单的异常处理能力。但我的程序仅支持单次计算,缺少循环、历史记录等功能,异常处理不够全面,交互体验一般,整体健壮性与实用性有待进一步优化。。
(二)使用豆包编写的计算器代码
1. LLM代码
这段代码是在基础运算之上实现了全面升级。程序采用主循环+函数模块化结构,支持实数与复数运算,具备连续计算、历史记录查询、指令退出、异常自动捕获等功能;对阶乘、取模、对数、开方等运算做了严格的合法性校验,界面美观、交互友好、鲁棒性强,能有效避免非法输入导致的程序崩溃,整体更接近实用工具。




2. 程序运行结果

3. 相较于我的代码,LLM 生成的有几个明显的优点:
1.支持连续计算,无需每次运行完就重启程序,使用更方便;
2.带有历史记录功能,可以查看之前的所有计算过程,便于核对和复用结果;
3.异常处理更完善,输入非法内容、格式错误、数学不合法运算时都会给出友好提示,程序不会崩溃;
4.界面更友好规范,有清晰的标题、操作说明和提示语,交互体验更好;
5.支持指令控制,可通过quit退出、history查看记录,实用性更强;
6.自动优化结果显示,实数自动去掉虚部、结果保留指定位数,展示更美观。
4. 问题 && 解决方案
复数无法直接进行取模运算
问题:直接对复数使用 % 运算符会报错,程序无法正常运行。
解决:通过查阅资料得知复数不支持取模,因此使用 .real 提取复数的实数部分后再进行取模运算,保证程序正常执行。
除数为 0 会导致程序直接崩溃
问题:当输入除数为 0 时,程序会抛出异常并退出。
解决:在除法函数中增加判断逻辑,若除数为 0,直接返回错误提示信息,避免程序崩溃。
运算符输入不规范,程序无法识别
问题:输入自定义以外的符号时,代码没有对应分支,无法给出有效反馈。
解决策略:在多分支判断末尾增加默认返回,对不支持的运算符统一给出错误提示,提升程序完整度。
三、上传的代码
以下是git地址:
自己写的代码
LLM代码
自主编写的基础计算器,实现了加、减、乘、除、取模、幂运算、对数、开方、阶乘等核心数学功能,可兼容实数与复数运算,代码逻辑清晰,能够体现对基础语法与模块化设计的掌握。但受限于经验不足,程序仅支持单次计算,缺乏循环执行与历史记录功能,异常处理机制较为薄弱,面对非法输入或特殊运算场景时稳定性不足,交互方式也较为单一。
LLM 生成的增强版计算器,在基础功能之上实现了多维度优化:一是支持连续计算,无需重复启动程序;二是新增历史记录查询功能,便于核对计算过程;三是完善了全场景异常处理,对非法输入、除数为零、复数非法运算等场景均有友好提示,程序鲁棒性显著提升;四是优化了交互界面,提供清晰的操作指引与指令控制,使用体验更贴近实用工具。
四、实验感悟与思考
通过本次计算器程序设计实验,我不仅系统巩固了Python基础语法、函数封装与条件判断等知识,也在对比分析自主代码与LLM生成代码的过程中,对程序开发有了更深刻的理解。
在自主编写计算器时,我深刻体会到“从功能实现到问题解决”的完整流程:为了让复数也能参与运算,我学会了利用.real属性提取实部;为了避免除数为零导致程序崩溃,我在除法逻辑中加入了条件判断;面对阶乘、对数等运算的特殊规则,我也在调试中逐步完善了输入校验。这个过程让我明白,代码不仅要“能跑通”,更要考虑边界情况与稳定性。
对比LLM生成的优化版计算器,我直观感受到了工程化思维的重要性。自主代码仅实现了基础功能,而LLM生成的版本通过循环结构实现了连续计算,通过异常捕获提升了鲁棒性,通过历史记录与指令优化了交互体验。这让我意识到,优秀的程序不仅需要核心功能,更需要完善的用户体验与严谨的异常处理。
五、参考资料
官方资料
- Python 官方socket库文档
- Python 官方tkinter库文档
- Python官方文档:https://docs.python.org/zh-cn/3/
- 学习通
- Python 复数运算与 cmath 库使用教程 [EB/OL]. [2026-05-14]. https://docs.python.org/zh-cn/3/library/cmath.html
- Python 异常处理与 try-except 语法详解 [EB/OL]. [2026-05-14]. https://docs.python.org/zh-cn/3/tutorial/errors.html

浙公网安备 33010602011771号