20241204 2025-2026-2 《Python程序设计》实验2报告
20241204 2025-2026-2 《Python程序设计》实验2报告
课程:《Python程序设计》
班级:2412
姓名: 李浩铭
学号:20241204
实验教师:王志强
实验日期:2026年4月13日
必修/选修: 公选课
1.实验内容
(1)编写计算器程序
设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。
考核基本语法、判定语句、循环语句、逻辑运算等知识点。
(2)用LLM生成一个计算器程序
介绍相关功能,并分析生成的程序代码含义。
对比分析自写程序与生成程序的区别(好与坏)。
2. 实验过程及结果
2.1编写计算机程序

(1)加法功能

(2)减法功能

(3)乘法功能

(4)除法功能及合理性验证

(5)取模运算及合理性验证

(6)次方运算

(7)对数运算及合理性验证

(8)整除运算

(9)功能总述:该程序是基于Python编写的多功能计算器,整合函数定义、循环、判定等核心知识点,可实现多种数学运算并支持连续使用。程序导入math库,定义8个独立运算函数,涵盖加减乘除、取模、整除、对数、次方,通过函数使逻辑清晰。主体采用while循环实现连续计算,用户输入两个运算数(支持整数、小数,由eval()自动识别)和运算符号,程序会校验符号合法性,非法则提示重输。运算中加入异常处理,避免除0、非法对数等情况,运算结果以格式化形式直观输出。每次运算后,用户输入“Y”继续、“N”(不区分大小写)退出,结构清晰可用。
(10)关键代码及解析
1. 导入数学库
import math
解释:导入math库,支持对数、次方运算。
2. 运算函数定义
def sum(a,b): return a+b:定义加法函数,封装运算逻辑。
def div(a,b): return a/b:定义除法函数,后续补充除0校验。
3. 循环控制
choice = True; while choice::控制程序连续计算。
if con.lower() == "n": choice = False:输入N/n退出程序。
4. 输入处理
a = eval(input("请输入一个数: ")):获取输入,自动识别整数/小数。
(11)实验代码(托管到Gitee):https://gitee.com/qingfeng-pu/PythonProject1/blob/master/实验二.py
2.2用LLM生成一个计算器程序

(1)介绍代码实现的功能
该代码核心功能的是实现多种数学运算。程序通过定义 7 个运算函数,分别实现加法、减法、乘法、除法、取模、次方和对数运算,其中除法、取模加入除 0 校验,对数加入输入合法性校验,避免运算错误。程序采用循环结构,通过菜单形式引导用户操作,用户可输入功能编号选择对应运算,输入两个数字进行计算,同时包含异常处理,可防止输入非数字、无效选项等情况导致程序崩溃。用户选择 0 即可退出程序,整体逻辑清晰,可连续进行多次运算。
(2)分析核心代码突出功能
- 运算函数(add/sub/mul等):封装独立运算逻辑,实现代码模块化,既符合函数调用的考核要求,也让运算逻辑更清晰,便于维护和修改。
- 异常处理(div/mod/log_calc函数):规避运算风险,针对除数为0、对数输入非法等情况给出明确提示,避免程序崩溃,保障运行稳定性。
- 主循环结构:实现连续运算功能,无需重复启动程序,搭配菜单选择,提升操作便捷性,同时体现循环语句的实际应用。
- 输入校验(try-except):过滤非法输入(非数字、无效功能编号),确保程序正常运行。
- 格式化输出:清晰展示运算过程与结果,让计算逻辑直观可见,符合程序输出的规范要求。
(3)对比我的代码与LLM生成的代码 - LLM生成的函数定义更规范:每个运算(加减乘除、取模、整除、对数、次方)都对应独立函数,模块化清晰,调用便捷。
- LLM异常处理更完善:针对除法、取模、整除的除数为0情况,以及对数的非法输入,都做了明确报错,避免程序崩溃,逻辑更严谨。
- LLM交互更友好:通过循环校验运算符号的合法性,输入错误时会提示并重新输入,无需重启程序,操作更流畅。
- LLM贴合基础编程考核:完美覆盖“函数定义、循环语句、条件判断、输入校验”等核心考点,代码结构清晰,易理解、易修改。
- LLM实用性更强:支持连续计算(通过Y/N选择继续),输入的数字无需固定类型,适配更多计算场景,容错率高。
(4)实验代码(托管到Gitee):https://gitee.com/qingfeng-pu/PythonProject20/blob/master/实验二LLM生成.py
3. 实验过程中遇到的问题和解决过程
- 问题1:代码托管到码云上无法创建仓库,显示推送失败,路径错误,不能合并以及变基
- 问题1解决方案:通过视频查询以及实操,从Pycharm上面管理远程,输入仓库地址,实现远程共享,成功托管代码
- 问题2:AI生成的代码具有多功能性,AI生成的代码一般都会有弹出主页控制菜单,通过不同选项实现不同的功能,而个人编写的程序则是通过一步一步逐次进行操作,并非有菜单
![image]()
![image]()
- 问题2解决方案:通过阅读LLM生成的代码,发现弹出菜单进行功能选择的便捷性与清晰性,有效实现了功能
其他(感悟、思考等)
感悟:通过本次实验,学习了如何在Python上编写各种运算,在实验过程中,我首先掌握了函数的定义与调用,将加减乘除、取模、整除、对数、幂运算等功能变成独立函数,让代码结构更清晰、实用性更强,同时,我学习了math库实现对数和幂运算,认识到借助库可以高效完成复杂计算。循环结构的使用也是亮点,课上老师通过加入循环示范,用while循环实现了计算器的连续运算功能,让用户可以多次计算直到选择退出;还通过嵌套循环对用户输入的运算符进行合法性校验,当输入错误符号时提示重新输入。最关键的收获是异常处理与边界判断的思维。我针对除法、取模、整除添加了除数为 0 的判断,针对对数运算添加了真数和底数的合法性校验,避免程序因非法输入崩溃。这让我明白,编写程序不仅要实现核心功能,更要考虑各种特殊情况,保障程序的稳定性。
参考资料
- 《Java程序设计与数据结构教程(第二版)》学习指导
- ...



浙公网安备 33010602011771号