20243222 实验二《Python程序设计》实验报告
学号 2025-2026-2 《Python程序设计》实验二报告
课程:《Python程序设计》
班级: 2432
姓名: 杨婕
学号:20243222
实验教师:王志强
实验日期:2026年4月13日
必修/选修: 公选课
1.实验内容
本次实验主要围绕 Python 基础语法、函数定义、条件判断、循环结构、数学运算、格式化输出以及 LLM 辅助编程等内容展开。通过编写计算器程序,进一步熟悉 Python 程序的基本结构,掌握函数封装和分支判断的使用方法,并通过与 LLM 生成程序进行对比,分析不同代码实现方式的优缺点。
(一)实验内容
(1)编写计算器程序
设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。
考核基本语法、判定语句、循环语句、逻辑运算等知识点。
(2)用LLM生成一个计算器程序
介绍相关功能,并分析生成的程序代码含义。
对比分析自写程序与生成程序的区别(好与坏)。
2. 实验过程及结果
一、自己编写计算器程序
(1)代码功能分析介绍
在课堂上,我首先跟随老师编写了计算器程序的大致框架,了解了计算器程序的基本设计思路。随后,我在原有框架的基础上进行了修改和完善,增加了部分新的计算功能,例如开方、求对数、求次方等,使程序功能更加丰富。
本次自己编写的计算器程序主要采用“菜单选择 + 函数调用”的方式实现。程序首先向用户展示可以选择的运算功能,用户根据提示输入对应的运算符或功能选项,随后程序根据用户选择调用相应的自定义函数完成计算。
我在程序中将每一种运算都封装成了单独的函数,例如加法函数、减法函数、乘法函数、除法函数、取余函数、求对数函数、求次方函数和开方函数。这样可以使代码结构更加清楚,也便于后续修改和扩展。
程序中还使用了math数学库,用于完成对数、开方、次方等数学运算。输出结果时,使用格式化字符进行输出,使计算结果的显示更加规范。
本计算器可以实现的主要功能如下:
1.加法运算;
2.减法运算;
3.乘法运算;
4.除法运算;
5.取余运算;
6.求对数;
7.求次方;
8.开方运算;
9.一次计算结束后,可选择是否继续使用计算器。
其中,加法、减法、乘法、除法、取余、求对数和求次方通常需要输入两个数字;开方运算只需要输入一个数字。为了使输入更加灵活,程序中使用了eval()对用户输入的数字进行转换,因此输入内容可以是整数、小数,也可以是复数形式。
一次计算完成后,程序会询问用户是否继续使用计算器。如果用户选择继续,程序会重新进入计算流程;如果用户选择退出,程序结束运行。这个功能主要通过while循环实现。
(2)自己写的代码运行结果
加法:
减法:
乘法:
除法:
取余:
求对数:
求次方:
开方:
(3)使用 LLM 生成计算器程序
在完成自己编写的计算器程序后,我使用豆包生成了一个计算器程序。生成程序后,我将代码复制到 Python 开发环境中运行,并对程序的功能和代码含义进行了分析。
以下为豆包生成代码的运行截图:


(4)LLM生成计算器程序的功能介绍
豆包生成的计算器程序功能相对更丰富,支持用户直接输入数学表达式进行计算。它可以完成的主要功能包括:
1.加法运算,如1+2;
2.减法运算,如5-3;
3.乘法运算,如24;
4.除法运算,如8/2;
5.平方运算;
6.开方运算;
7.圆周率相关计算;
8.三角函数计算;
9.连续计算;
10.输入退出指令后结束程序。
与我自己编写的计算器不同,LLM生成的程序不需要用户先选择运算符再分别输入数字,而是可以直接输入完整的数学表达式。例如,用户可以直接输入类似1+23的表达式,程序会按照数学运算顺序进行计算。
(5)优自写程序与LLM生成程序的对比分析
- 自己编写的计算器程序
1.1优点
逻辑清晰,便于理解:自己编写的程序采用“选择运算符—输入数字—调用函数—输出结果”的流程,整体逻辑比较简单。
每个功能独立封装:每一种运算都通过单独的自定义函数实现,例如加法函数、减法函数、除法函数等。这样能够帮助我练习函数定义和函数调用,也能让不同功能之间的关系更加清楚。
输入流程可控:用户必须先选择运算类型,再输入对应数字,因此程序能够较明确地知道当前要执行哪一种操作。相比直接输入表达式,这种方式不容易出现表达式语法错误。
适合基础语法练习:自己编写的程序使用了函数、条件判断、循环、格式化输出等知识点,比较适合作为 Python 初学阶段的综合练习。
1.2缺点
使用过程相对繁琐:用户不能直接输入1+23这样的完整表达式,而是必须先选择运算符,再分别输入数字。对于简单计算来说步骤较多。
不支持复杂混合运算:自己编写的程序一次通常只能完成一种运算,例如只能先算加法,再算乘法,不能直接处理多个运算符组合的表达式。
代码重复较多:每个运算功能都需要单独写输入、判断和调用逻辑。如果要增加新功能,需要继续添加新的函数和新的if-elif分支,代码会逐渐变长。
异常处理不够完善:如果用户输入了不符合要求的内容,程序可能会报错。相比LLM生成程序,自写程序在输入错误处理方面还不够完善。
2.LLM生成的计算器程序
2.1优点
支持直接输入数学表达式:LLM生成的程序可以直接输入完整表达式,例如1+23,程序会自动按照运算规则计算结果,使用起来更加方便。
支持复杂混合运算:由于使用了eval(),程序能够处理包含多个运算符的表达式,不需要用户分步计算。
说明和示例更完整:LLM生成的程序通常会在运行时打印功能说明和输入示例,用户能够更快了解程序的使用方法。
具有异常处理能力:程序使用try-except捕获错误,用户输入错误时程序不会直接崩溃,而是会输出提示信息。
缺点
错误提示不够具体:虽然程序能够捕获异常,但所有错误可能都只输出“输入错误”之类的统一提示,用户无法准确知道是语法错误、除零错误,还是函数格式错误。
对初学者来说理解难度稍高:LLM 生成的程序使用了eval()、replace()、try-except和math库等内容,代码较灵活,但对于刚学习Python我来说,理解起来比基础版本更困难。
输入安全性需要注意:eval() 虽然使用方便,但会执行字符串中的 Python 表达式。如果没有限制输入内容,在实际项目中可能存在安全隐患。
3. 实验过程中遇到的问题和解决过程
- 问题1:对格式化字符不够熟悉,容易少打括号
在编写计算器程序时,我需要使用格式化字符输出计算结果。但刚开始对格式化输出的写法不够熟悉,经常会出现括号不完整、格式符号写错等问题,导致程序运行时报错。 - 问题1解决方案:我先重新理解了格式化字符的基本用法,然后通过多次手写代码进行练习。每次出现错误时,我都会根据 PyCharm 的提示检查括号、引号和格式化符号是否正确。经过反复练习后,我逐渐掌握了格式化输出的写法,也能更加规范地输出计算结果。通过这个问题,我认识到基础语法虽然看起来简单,但只有多写、多运行、多修改,才能真正熟练掌握。
- 问题2:部分计算功能不能完全实现
在编写开方功能时,我遇到了逻辑不清晰的问题。因为加法、减法、乘法、除法等功能通常需要输入两个数字,而开方运算只需要输入一个数字。刚开始我把所有运算都按照输入两个数字的方式处理,导致开方功能运行时出现错误。 - 问题2解决方案:我重新分析了不同运算对输入数字数量的要求。对于加减乘除、取余、求对数、求次方等运算,程序需要提示用户输入两个数字;对于开方运算,只需要输入一个数字。因此,我调整了提示用户输入数字语句的位置,并对不同运算类型进行区分处理。修改后,开方功能能够正常运行。通过这个问题,我认识到写程序前需要先理清逻辑流程,不能只按照一种情况去设计所有功能。
其他(感悟、思考等)
自己动手编写计算器代码的过程让我体会到了从零开始实现功能的成就感。虽然我的代码相对简单,也存在重复较多、功能扩展不够方便等问题,但这是我在理解程序逻辑后独立完成的结果。在编写过程中,我不仅练习了Python基础语法,也学会了如何根据不同功能设计不同的输入和计算流程。
通过和豆包生成的代码进行对比,我发现LLM生成的程序在功能完整性、代码简洁性和用户体验方面有不少优点。它可以直接输入数学表达式,支持复杂混合运算,还加入了异常处理,使程序更加灵活和实用。但与此同时,LLM生成的代码也提醒我,不能只关注程序能否运行,还要理解代码背后的实现原理。例如,eval()虽然方便,但也需要注意输入安全和异常处理。

浙公网安备 33010602011771号