20252110史菲宇Python实验二

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

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

一、实验内容

本次实验围绕计算器程序设计展开,主要包含两个关键任务:

  1. 独立设计并编码实现一款基础计算器,涵盖加、减、乘、除、取模等核心数学运算,并基于此基础功能进行额外拓展,完善程序实用性;

  2. 利用大型语言模型(LLM)生成一款功能更全面的计算器程序,对其代码结构、运算逻辑进行细致分析,与自身编写的基础程序进行多维度对比,梳理两者在功能、结构、易用性等方面的优劣之分与具体差异。

二、实验过程及结果

(一)这是我的基础计算器程序

1. 代码实现:

实现了一个基础计算器,支持加减乘除、取模、幂运算、对数、开方、阶乘等功能,可处理实数与复数运算,并具备基本的异常判断能力。

代码如下:

image
image

全功能运行结果

加法运算

image

减法运算

image

乘法运算

image

除法运算

image

取模运算

image

幂运算

image

对数运算

image

开根号运算

image

阶乘运算

image

复数加法

image

除法(除数为 0)

image

无效运算符

image

2. 代码特点和不足:

采用函数模块化设计,结构清晰易懂,支持实数与复数运算,实现了多种基础与拓展数学运算,并具备简单的异常处理能力。但我的程序仅支持单次计算,缺少循环、历史记录等功能,异常处理不够全面,交互体验一般,整体健壮性与实用性有待进一步优化。。

(二)使用豆包编写的计算器代码

1. LLM代码

这段代码是在基础运算之上实现了全面升级。程序采用主循环+函数模块化结构,支持实数与复数运算,具备连续计算、历史记录查询、指令退出、异常自动捕获等功能;对阶乘、取模、对数、开方等运算做了严格的合法性校验,界面美观、交互友好、鲁棒性强,能有效避免非法输入导致的程序崩溃,整体更接近实用工具。
image
image
image
image

2. 程序运行结果

image

3. 相较于我的代码,LLM 生成的有几个明显的优点:

1.支持连续计算,无需每次运行完就重启程序,使用更方便;
2.带有历史记录功能,可以查看之前的所有计算过程,便于核对和复用结果;
3.异常处理更完善,输入非法内容、格式错误、数学不合法运算时都会给出友好提示,程序不会崩溃;
4.界面更友好规范,有清晰的标题、操作说明和提示语,交互体验更好;
5.支持指令控制,可通过quit退出、history查看记录,实用性更强;
6.自动优化结果显示,实数自动去掉虚部、结果保留指定位数,展示更美观。

4. 问题 && 解决方案

复数无法直接进行取模运算

问题:直接对复数使用 % 运算符会报错,程序无法正常运行。
解决:通过查阅资料得知复数不支持取模,因此使用 .real 提取复数的实数部分后再进行取模运算,保证程序正常执行。

除数为 0 会导致程序直接崩溃

问题:当输入除数为 0 时,程序会抛出异常并退出。
解决:在除法函数中增加判断逻辑,若除数为 0,直接返回错误提示信息,避免程序崩溃。

运算符输入不规范,程序无法识别

问题:输入自定义以外的符号时,代码没有对应分支,无法给出有效反馈。
解决策略:在多分支判断末尾增加默认返回,对不支持的运算符统一给出错误提示,提升程序完整度。

三、上传的代码

以下是git地址:
自己写的代码
LLM代码
自主编写的基础计算器,实现了加、减、乘、除、取模、幂运算、对数、开方、阶乘等核心数学功能,可兼容实数与复数运算,代码逻辑清晰,能够体现对基础语法与模块化设计的掌握。但受限于经验不足,程序仅支持单次计算,缺乏循环执行与历史记录功能,异常处理机制较为薄弱,面对非法输入或特殊运算场景时稳定性不足,交互方式也较为单一。
LLM 生成的增强版计算器,在基础功能之上实现了多维度优化:一是支持连续计算,无需重复启动程序;二是新增历史记录查询功能,便于核对计算过程;三是完善了全场景异常处理,对非法输入、除数为零、复数非法运算等场景均有友好提示,程序鲁棒性显著提升;四是优化了交互界面,提供清晰的操作指引与指令控制,使用体验更贴近实用工具。

四、实验感悟与思考

通过本次计算器程序设计实验,我不仅系统巩固了Python基础语法、函数封装与条件判断等知识,也在对比分析自主代码与LLM生成代码的过程中,对程序开发有了更深刻的理解。
在自主编写计算器时,我深刻体会到“从功能实现到问题解决”的完整流程:为了让复数也能参与运算,我学会了利用.real属性提取实部;为了避免除数为零导致程序崩溃,我在除法逻辑中加入了条件判断;面对阶乘、对数等运算的特殊规则,我也在调试中逐步完善了输入校验。这个过程让我明白,代码不仅要“能跑通”,更要考虑边界情况与稳定性。
对比LLM生成的优化版计算器,我直观感受到了工程化思维的重要性。自主代码仅实现了基础功能,而LLM生成的版本通过循环结构实现了连续计算,通过异常捕获提升了鲁棒性,通过历史记录与指令优化了交互体验。这让我意识到,优秀的程序不仅需要核心功能,更需要完善的用户体验与严谨的异常处理。

五、参考资料

官方资料

CSDN

posted @ 2026-05-14 17:23  时雨楼  阅读(26)  评论(0)    收藏  举报