20244309黄至泓 2025-2026-2 《Python程序设计》实验二报告
20244309黄至泓 2025-2026-2 《Python程序设计》实验二报告
课程:《Python程序设计》
班级:2443
姓名: 黄至泓
学号:20244309
实验教师:王志强
实验日期:2026年4月13日
必修/选修: 公选课
1.实验内容
(1)编写计算器程序
设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。考核基本语法、判定语句、循环语句、逻辑运算等知识点。
(2)用LLM生成一个计算器程序
介绍相关功能,并分析生成的程序代码含义。对比分析自写程序与生成程序的区别(好与坏)。
2. 实验过程及结果
(1)实验过程
明确实验要求:根据《Python 程序设计》实验二任务,需要完成两项核心内容:一是自主编写支持加减乘除模运算的计算器程序,考核 Python 基础语法、判断语句、循环语句、逻辑运算等知识点;二是使用大语言模型(LLM)生成计算器程序,完成功能介绍、代码分析,并对比自写程序与生成程序的优缺点。
自主编写计算器程序:先梳理计算器核心逻辑,确定支持加、减、乘、除、取模运算,规划输入获取、合法性校验、运算执行、结果输出、循环运行与退出流程;编写过程中使用input获取用户输入、if-elif实现运算判断、while循环实现连续计算、try-except处理输入非数字、除数为0等异常,逐步调试完善代码。
使用 LLM 生成计算器程序:向豆包大语言模型提出 “生成可直接运行、带错误处理的Python简易计算器程序” 的需求,获取完整可运行代码,保存并本地运行验证程序可用性。
功能介绍与代码分析:梳理 LLM 生成程序的核心功能,结合代码逐行解析函数、循环、异常处理、条件判断、输入输出、退出控制等模块的含义,形成完整分析内容。
对比分析两种程序:从代码完整性、功能丰富度、容错能力、代码规范、可读性、扩展性等维度,对比自主编写程序与 LLM 生成程序的优势与不足。
整理实验内容:汇总实验步骤、运行结果、代码、分析、对比内容,完善实验报告格式,检查无误后完成实验。
(2)实验结果
自主编写计算器程序:
import math
def sum(a, b):
return a + b
def sub(a, b):
return a - b
def operator(a, b):
return a * b
def quetient(a, b):
return a / b
def mod(a, b):
return a % b
def log(a, b):
return math.log(a, b)
def pow(a, b):
return math.pow(a, b)
while True:
a = float(input("请输入一个数:\n"))
b = float(input("请输入一个数:\n"))
operator = input("选择运算符号:+、-、、/、%、log、//\n")
if operator not in ["+", "-", "", "/", "%","log","//"]:
print("输入错误,请重新输入")
operator = input("选择运算符号:+、-、、/、%、log、//\n")
if operator == "+":
print(f"{a} {operator} {b}=", sum(a, b))
if operator == "-":
print(f"{a} {operator} {b}=", sub(a, b))
if operator == "":
print(f"{a} {operator} {b}=", operator(a, b))
if operator == "/":
print(f"{a} {operator} {b}=", quetient(a, b))
if operator == "%":
print(f"{a} {operator} {b}=", mod(a, b))
if operator == "log":
print(f"{a} {operator} {b}=", log(a, b))
if operator == "//":
print(f"{a} {operator} {b}=", pow(a, b))
again = input("继续计算吗?(y/n):")
if again != 'y':
break
代码分析:本代码首先定义了数个用于计算的函数如+、-、、/、%等,接着输入两个数字及运算符号,运用while用于重复进行计算,并用if语句判断需要执行的运算,并用print语句输出计算结果。

豆包LLM生成代码:
import math
print("=" * 50)
print(" 🌟 Python 多功能高级计算器 🌟")
print("=" * 50)
while True:
print("\n【可用运算功能】")
print("1. 加法(+) 2. 减法(-) 3. 乘法()")
print("4. 除法(/) 5. 取模(%) 6. 平方(x²)")
print("7. 立方(x³) 8. 平方根(√) 9. 次方(x^y)")
print("10. 对数(log) 11. 阶乘(!) 0. 退出程序")
print("=" * 50)
choice = input("请输入功能编号:").strip()
if choice == "0":
print("\n感谢使用,再见!👋")
break
if choice in ["6", "7", "8", "11"]:
try:
num = float(input("\n请输入数字:"))
except:
print("输入错误!请输入有效数字")
continue
if choice == "6":
res = num ** 2
print(f"结果:{num}² = {res}")
elif choice == "7":
res = num ** 3
print(f"结果:{num}³ = {res}")
elif choice == "8":
if num < 0:
print("负数不能开平方")
else:
res = math.sqrt(num)
print(f"结果:√{num} = {res}")
elif choice == "11":
if num < 0 or not num.is_integer():
print("阶乘仅支持非负整数")
else:
res = math.factorial(int(num))
print(f"结果:{int(num)}! = {res}")
elif choice in ["1", "2", "3", "4", "5", "9", "10"]:
try:
a = float(input("\n请输入第一个数字:"))
b = float(input("请输入第二个数字:"))
except:
print("输入错误!请输入有效数字")
continue
if choice == "1":
res = a + b
print(f"结果:{a} + {b} = {res}")
elif choice == "2":
res = a - b
print(f"结果:{a} - {b} = {res}")
elif choice == "3":
res = a * b
print(f"结果:{a} × {b} = {res}")
elif choice == "4":
if b == 0:
print("错误:除数不能为0")
else:
res = a / b
print(f"结果:{a} ÷ {b} = {res}")
elif choice == "5":
if b == 0:
print("错误:模数不能为0")
else:
res = a % b
print(f"结果:{a} % {b} = {res}")
elif choice == "9":
res = math.pow(a, b)
print(f"结果:{a} ^ {b} = {res}")
elif choice == "10":
if a <= 0 or b <= 0 or b == 1:
print("对数输入不合法")
else:
res = math.log(a, b)
print(f"结果:log({a},{b}) = {res}")
else:
print("无效编号,请输入 0~11 之间的数字")
print("-" * 50)

代码分析:这段代码利用while True循环实现连续计算;程序展示清晰的功能菜单,接收用户输入的功能编号后,通过if-elif分支区分单目运算与双目运算,结合try-except捕获非数字输入异常,对除数为0、负数开平方、非法对数与阶乘等情况做了严谨判断,最后根据所选运算执行对应计算并输出结果。
比较:我自主实现的计算器代码,通过import math导入数学库,分别定义了加减乘除、取模、对数等运算函数,使用while True循环实现重复计算功能,根据用户输入的运算符调用对应函数执行计算;与之前LLM生成的多功能计算器相比,我的代码结构更简洁、但仅包含基础运算与自定义函数,且缺少异常处理、非法值判断等容错机制,而LLM生成的计算器功能更丰富、逻辑更严谨,具备完善的异常处理与合法性校验。
3. 实验过程中遇到的问题和解决过程
- 问题1: LLM 初次生成的计算器代码,对除法中除数为0的情况处理不清晰,容易出现逻辑错误。
- 问题1解决方案: 重新提出要求,要求在在除法运算分支中增加判断,当除数为0时直接提示错误并跳过本次计算,保证程序不崩溃且提示友好。
- 问题2:直接复制LLM代码运行时出现缩进错误,Python提示语法异常,程序无法正常启动。
- 问题2解决方案:Python语言对缩进格式有严格要求,逐行检查代码,为while循环、if、elif判断异常处理等代码块添加统一的缩进空格,修正所有缩进错误,让程序符合语法规范,成功正常运行。
其他(感悟、思考等)
通过本次实验,我熟练掌握了Python基础语法、判断语句、循环语句和异常处理的使用,能够独立完成简易计算器的编写;同时体会到大语言模型在快速生成规范代码、提升编程效率方面的优势,LLM 生成的代码结构清晰、容错性强,适合快速实现基础功能。但自主编写程序更能加深我对语法与逻辑的理解。我们可以根据需求灵活扩展功能,两者各有优势。未来学习中,我会将自主编程与工具辅助结合,既夯实基础,又提升开发效率。
参考资料
- 《Java程序设计与数据结构教程(第二版)》
- 《Java程序设计与数据结构教程(第二版)》学习指导
浙公网安备 33010602011771号