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

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

课程:《Python程序设计》
班级: 2541
姓名: 汤中凯
学号:20254127
实验教师:王志强
实验日期:2025年4月7日
必修/选修: 专选课

1.实验内容

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

2. 实验过程

一、自己编写计算器程序

设计并实现一个完整的计算器应用程序,要求支持加法、减法、乘法、除法、取模等基本运算。功能尽可能丰富,在实现过程中综合运用Python的基本语法、条件判断语句、循环语句、逻辑运算等知识点。
过程如下:
(1)建立Python文件,命名为“实验二计算器”并设计代码,在实验过程中综合运用Python的基本语法、条件判断语句、循环语句、逻辑运算等知识点。
image
①关于函数定义:我把加、减、乘、除、取模、整除这六种运算分别写成了独立的函数(sum0、sub0、multi0、div0、mod0、quo0)。每个函数接收两个数,返回计算结果。这样写主要是为了让主程序看起来简洁一些,每个函数只管自己的运算逻辑。
②关于基本语法:就是变量赋值、input()接收用户输入、print()输出结果这些最基础的东西。整个程序就是靠这些搭起来的。
③关于条件判断:在除法、取模、整除三个函数里面,我都加了if b==0的判断。因为除数不能为零,如果用户输入0,程序直接报错就崩了,体验不好。所以我提前判断一下,返回一段提示文字而不是让程序崩溃。
④关于循环语句:我用的是while True,配合if choice == q: break来退出。这样用户可以算完一次接着算下一次,不用每次重新运行程序。
⑤关于异常处理:我没有用try/except,而是用if判断提前挡住了除零的情况。我觉得这样也挺直接的,把可能出错的地方先拦住。
image
(2)加法、减法、乘法、除法、取模等基本运算(+、-、、/、%)运行如下
加法(+)
image
减法(-)
image
乘法(

image
除法(/)
image
取模(%)
image

二、用LLM生成计算器程序并对比分析

用LLM生成一个计算器程序,介绍相关功能,并分析生成的程序代码含义;对比分析自写程序与生成程序的区别(好与坏)
使用DeepSeek大语言模型,输入以下提示词:“请用Python写一个计算器程序,支持加减乘除和取模运算,功能具有一定便捷性”
image
image

LLM生成的计算器具有以下功能:
①图形界面:使用tkinter创建按钮式界面,美观直观
②按钮输入:通过点击按钮输入数字和运算符,避免键盘输入错误
③实时显示:输入和结果在顶部文本框中实时显示
④异常处理:对除零、非法字符、表达式错误等进行了捕获和处理
⑤清除功能:C按钮清空当前输入
⑥退出功能:Exit按钮关闭程序

对比分析自写程序与生成程序的区别(好与坏)
①自写程序的优点:
不依赖eval(),完全自主控制计算逻辑,安全性高
实现了历史记录功能,用户体验更好
代码逻辑清晰,便于理解和修改
对运算符优先级的控制体现了对计算器原理的深入理解
②自写程序的缺点:
命令行界面不够友好,操作不够直观
代码量较大,解析部分容易出bug
没有图形界面,不够现代化
③LLM生成程序的优点:
图形界面美观直观,用户体验好
开发速度快,几分钟即可得到一个可用的程序
异常处理相对完善
代码简洁,易于理解
④LLM生成程序的缺点:
依赖eval()函数,虽然做了字符过滤但仍存在潜在安全风险
没有显式处理运算符优先级,不够“透明”
扩展新功能需要理解tkinter的事件机制
裸except不是好的编程习惯
⑤个人总结:两种实现方式各有优劣。自己写程序更适合学习底层原理,加深对语言特性的理解;LLM生成程序适合快速原型开发,特别是需要图形界面时能节省大量时间。在实际开发中,可以将两者结合:用LLM生成框架,再用手写代码替换不安全或不满意的部分。

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

  • 问题1:自己编写的解析器无法正确处理负数,例如输入 -5 + 3 会报错。
  • 问题1解决方案:修改正则表达式,允许表达式开头出现负号,同时在解析时标记第一个负数。最终采用更简单的方法:在解析前检查表达式是否以负号开头,如果是则在开头补0,变为 0-5+3 的形式。
  • 问题2:除法运算结果精确度问题,整数除法期望得到浮点数结果。
  • 问题2解决方案:在词法分析阶段将所有数字转换为浮点数,这样除法运算自然产生浮点数结果。同时修改显示格式,如果是整数则显示为整数形式。

其他(感悟、思考等)

通过这次实验,我对Python程序设计和计算器的工作原理有了更深的理解。以前总觉得计算器是个很简单的程序,真正动手后才发现,光是表达式解析和优先级处理就有很多细节需要注意。比如连续运算符、负数处理、空格过滤、除零检查等,稍不留神就会出bug。这个过程虽然费时,但确实让我对字符串处理、列表操作、循环控制等知识点有了更扎实的掌握。在实际开发中,我可能会先用LLM快速搭个原型,验证可行性,然后再手工重写核心算法,保证安全性和可控性。这次实验让我对“效率”和“质量”的平衡有了更实际的体会。

参考资料

  • 《Python程序设计》
posted @ 2026-04-08 20:21  汤中凯  阅读(9)  评论(0)    收藏  举报