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编写计算机程序
image
(1)加法功能
image
(2)减法功能
image
(3)乘法功能
image
(4)除法功能及合理性验证
image
(5)取模运算及合理性验证
image
(6)次方运算
image
(7)对数运算及合理性验证
image
(8)整除运算
image
(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生成一个计算器程序
image
(1)介绍代码实现的功能
该代码核心功能的是实现多种数学运算。程序通过定义 7 个运算函数,分别实现加法、减法、乘法、除法、取模、次方和对数运算,其中除法、取模加入除 0 校验,对数加入输入合法性校验,避免运算错误。程序采用循环结构,通过菜单形式引导用户操作,用户可输入功能编号选择对应运算,输入两个数字进行计算,同时包含异常处理,可防止输入非数字、无效选项等情况导致程序崩溃。用户选择 0 即可退出程序,整体逻辑清晰,可连续进行多次运算。
(2)分析核心代码突出功能

  1. 运算函数(add/sub/mul等):封装独立运算逻辑,实现代码模块化,既符合函数调用的考核要求,也让运算逻辑更清晰,便于维护和修改。
  2. 异常处理(div/mod/log_calc函数):规避运算风险,针对除数为0、对数输入非法等情况给出明确提示,避免程序崩溃,保障运行稳定性。
  3. 主循环结构:实现连续运算功能,无需重复启动程序,搭配菜单选择,提升操作便捷性,同时体现循环语句的实际应用。
  4. 输入校验(try-except):过滤非法输入(非数字、无效功能编号),确保程序正常运行。
  5. 格式化输出:清晰展示运算过程与结果,让计算逻辑直观可见,符合程序输出的规范要求。
    (3)对比我的代码与LLM生成的代码
  6. LLM生成的函数定义更规范:每个运算(加减乘除、取模、整除、对数、次方)都对应独立函数,模块化清晰,调用便捷。
  7. LLM异常处理更完善:针对除法、取模、整除的除数为0情况,以及对数的非法输入,都做了明确报错,避免程序崩溃,逻辑更严谨。
  8. LLM交互更友好:通过循环校验运算符号的合法性,输入错误时会提示并重新输入,无需重启程序,操作更流畅。
  9. LLM贴合基础编程考核:完美覆盖“函数定义、循环语句、条件判断、输入校验”等核心考点,代码结构清晰,易理解、易修改。
  10. 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程序设计与数据结构教程(第二版)》

《Java程序设计与数据结构教程(第二版)》学习指导
-  ...

posted @ 2026-04-14 14:58  花间且晚钟  阅读(5)  评论(0)    收藏  举报