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

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

课程:《Python程序设计》
班级: 2512
姓名: 李佳豪
学号:20251229
实验教师:王志强
实验日期:2026年4月13日
必修/选修: 公选课

1.实验内容

(1)编写计算器程序
• 设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。
• 考核基本语法、判定语句、循环语句、逻辑运算等知识点。
(2)用LLM生成一个计算器程序  
• 介绍相关功能,并分析生成的程序代码含义。
• 对比分析自写程序与生成程序的区别(好与坏)。

2. 实验过程及结果

一、计数器原创:

算法设计

本程序参考课堂案例设计,核心是将各类运算封装为独立函数,主程序可根据运算符灵活调用对应函数,让代码结构更简洁清晰。
程序围绕两个数值的计算展开,采用 while True 循环实现连续运算,能多次进行计算操作,同时设置 exit 退出指令,
防止程序出现死循环。为提升代码健壮性,通过异常处理判断数字输入合法性,非数字输入会提示重新输入,也对运算符做了有效校验,避免无效输入导致程序报错。
功能上实现了加减乘除、取模、整除、幂运算与对数运算,针对除法、对数等特殊运算,还添加了数学合法性判断,处理除数为0、对数底数与真数不合法等问题,保证程序正常运行。

代码呈现:

对运算法则进行函数封装。

image

主函数:对输入的两个数字进行输入正确性判断。(这里使用了try-except捕获异常}

image

用循环实现运算的输出结果,同时增加退出条件。

91416733c3ed9b752cabf7d25405ed2e

程序实现:

0f56df1d8b807d158d2581c97864ff9d
f3e570617de2e288e2c5156abd34521d
31246a7dc6efbe1d8e6d879f7c3d2e84
3dc272851cc48a154e6421193ddc8d8c

二、计数器AI:

程序功能介绍和程序代码含义分析

将运算法则进行函数分装,扩展并分类成基础运算,高级运算,三角函数,复杂运算四个部分。

程序开头使用 import math 引入 Python 内置数学库,为开方、阶乘、三角函数、幂运算等功能提供基础计算支持。
代码将每一类计算逻辑独立封装为函数,如 add 、 div 、 sin_deg 、 to_binary 等。每个函数专注完成单一运算,结构清晰,便于调用和维护,体现了模块化设计思想。
该程序是一个基于函数封装实现的多功能计算器,共包含五大功能模块:

  1. 基础运算:实现两个数的加、减、乘、除运算,并对除数为 0 进行异常处理;
  2. 高级运算:支持开平方、平方、立方、阶乘与绝对值计算;
  3. 三角函数:以角度为单位计算正弦、余弦、正切值;
  4. 复杂运算:包含幂运算、取余、取整和百分比计算;
  5. 进制转换:实现十进制到二进制、八进制、十六进制的转换。
    程序通过菜单引导操作,支持循环使用,并具备输入错误提示功能,运行稳定。
    84ebd8b6ec278023d15bbbba821f9198
    5dca212011413ab80266066daaa859fd

主函数

calculator() 作为主函数,通过 while True 实现程序持续运行,并展示功能菜单。根据用户输入的数字选项,使用多分支判断进入对应运算模块,完成交互与计算。
异常处理:代码使用 try-except 捕获非法输入,避免因用户输入非数字内容导致程序崩溃,提升了程序健壮性。
程序启动:最后直接调用 calculator() ,使程序运行后直接进入计算器界面,结构简洁完整。
29d62510e143a6bcf2aec4d992293e41
384b9c020517918d45e3c47cced3fdb1
e2f696e117c96ae74b7e339949b3a091

程序实现:

64e73ed8c57f04cb2d5c3b8aad5d5a48
030cd30f29f276e0f28b84124245669b
6430d07f8eabbb1deb7909fd42c8dc55
454f1c7b8df59a75a294d1355fd463d9
三、自写程序与生成程序的优缺点对比
(一)生成程序的优点
1.功能更全面:我的自写程序只有基础的加减乘除、取模、对数、幂运算,这个生成程序拓展了三角函数、进制转换、取整、阶乘等超多功能,实用性更强。
2.结构更规范:用总控函数整合所有代码,还按功能分了模块,代码可读性高,后期想加新功能也很方便。
3.容错性更好:全程加了异常处理,不管是输错数字、乱输字符,都只会提示错误,不会崩溃,我的自写程序异常处理覆盖没这么全面。
4.交互更友好:有清晰的菜单引导,用户不用记运算符,按数字选择功能就行,操作更简单。
(二)生成程序的缺点
1.针对性不强:一些运算采用函数封装的写法,导致一次进行多种复杂运算,不能实现单一的复杂运算。
3.灵活性不足:菜单式操作固定了运算流程,不能像自写程序那样直接输入数字和运算符,不够简洁。
(三)自写程序的优缺点
1.优点:代码简洁,逻辑简单,完全贴合课堂所学的基础知识点,容易理解和修改。
2.缺点:功能单一,只有基础运算,没有拓展功能;结构比较简单,容错性和交互性不如生成程序完善。

3. 实验过程中遇到的问题和解决过程

问题1:缩进错误
问题1的解决方案:将运算分支写在了运算符输入循环内部,导致合法输入时分支无法执行,属于逻辑结构错误。应该把运算相关的判断代码移至运算符循环外部,等输入合法并跳出循环后再执行运算。
问题2:对数函数参数顺序错误
问题2的解决方案:函数定义为 log(底数, 真数),但调用时传参顺序颠倒,导致计算结果错误。我通过修改调用语句,使参数顺序与函数定义保持一致。
问题3:模块导入不规范
问3的解决方案:将 import math 写在 log 函数内部,不符合 Python 编码规范。应该把模块导入语句移到代码最顶部,保证只导入一次。
问题4:输入异常处理不完善
问题4的解决方案:数字输入处未添加 exit 退出判断,输入 exit 时程序会直接报错。因此在读取数字应前先判断输入内容是否为 exit,如果是则正常退出程序。

上传到Gitee

0b8c0ad601a7b570490f71ab6892c550
image

其他(感悟、思考等)

通过这次实验二编写计算器的过程,我对Python中的函数封装、循环和分支结构有了更具体的理解。
在一步步实现功能、不断调试改错的过程中,我也真正体会到了程序逻辑严谨的重要性。
在调试时我发现,像缩进不对、参数顺序写反这种小问题,都能让程序直接运行出错,甚至算不出
正确结果。这让我意识到,写代码必须非常细心,一点小疏忽都可能导致整个程序出错。另外,模块导
入位置、异常处理这些看似不起眼的细节,也能让程序更稳定、更不容易崩溃,也让我意识到养成良好代码习惯的重要性。
通过对比简单计算器和多功能计算器,我也感受到了把功能拆成函数来写的好处,结构更清楚,
之后想加新功能也更方便。这次实验让我明白,写程序不只是把功能实现就行,还要注意规范和健壮性,也为
之后学习更复杂的内容积累了经验。

尝试到华为云服务器上运行

dec000d8e5f7d26eb76c7d0f885f46cb

参考资料

posted @ 2026-04-18 13:23  20251229李佳豪  阅读(21)  评论(0)    收藏  举报