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

课程:《Python程序设计》
班级: 2523
姓名: 陈冠宇
学号:20252320
实验教师:王志强
实验日期:2026年4月16日
必修/选修: 公选课
1.实验内容
(1)编写计算器程序

设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。

考核基本语法、判定语句、循环语句、逻辑运算等知识点。
(2)用LLM生成一个计算器程序

介绍相关功能,并分析生成的程序代码含义。

对比分析自写程序与生成程序的区别(好与坏)。

  1. 实验过程及结果
    自己手写的python计算器程序:
    def calculator():
    print("简易计算器(支持 +, -, *, /, %)")
    print("输入格式:数字1 运算符 数字2,例如 5 + 3")
    print("输入 'q' 退出")

    while True:
    expr = input("请输入表达式:").strip()
    if expr.lower() == 'q':
    print("退出程序")
    break

    parts = expr.split()
    if len(parts) != 3:
    print("格式错误,请按:数字 运算符 数字")
    continue

    try:
    num1 = float(parts[0])
    op = parts[1]
    num2 = float(parts[2])
    except ValueError:
    print("数字输入无效")
    continue

    if op == '+':
    result = num1 + num2
    elif op == '-':
    result = num1 - num2
    elif op == '*':
    result = num1 * num2
    elif op == '/':
    if num2 == 0:
    print("除数不能为0")
    continue
    result = num1 / num2
    elif op == '%':
    result = num1 % num2
    else:
    print("不支持的运算符")
    continue

    print(f"结果:{result}\n")

if name == "main":
calculator()`
试验结果:

屏幕截图 2026-05-11 224523
llm生成的计算器程序:
`import operator

def get_operation(op_str):
operations = {
'+': operator.add,
'-': operator.sub,
'*': operator.mul,
'/': operator.truediv,
'%': operator.mod
}
return operations.get(op_str)

def safe_divide(a, b):
if b == 0:
raise ValueError("除数不能为零")
return a / b

def main():
print("智能计算器 v1.0")
while True:
cmd = input(">> ").strip()
if cmd in ('exit', 'q'):
break

parts = cmd.split()
if len(parts) != 3:
print("用法:数字 运算符 数字")
continue

try:
a, op, b = float(parts[0]), parts[1], float(parts[2])
except:
print("数字格式错误")
continue

func = get_operation(op)
if not func:
print("不支持的操作")
continue

if op == '/':
try:
res = safe_divide(a, b)
except ValueError as e:
print(e)
continue
else:
res = func(a, b)

print(f"= {res}")

if name == "main":
main()`
对比:
自写程序:
简单直接,采用if-else逐条判断;只处理基础异常;对格式要求高;计算器不能实现连续计算。
LLM生成程序:
结构上使用字典,提示简洁,能细分除零、格式、运算符的错误。
3. 实验过程中遇到的问题和解决过程
(1)自写程序类型转换异常,有时无法转换浮点数。
(2)无法循环利用代码,只能重新启动程序。
解决:在try-except中捕获异常并打印中文提示,不结束程序。
引入表达式解析,可以连续计算。
增加退出程序的条件。

参考资料
[《Python程序设计》课程教材]
Python官方文档 - math模块
Python官方文档 - 错误和异常
《Java程序设计与数据结构教程(第二版)》
《Java程序设计与数据结构教程(第二版)》学习指导

posted @ 2026-05-12 07:22  小天冰星  阅读(14)  评论(1)    收藏  举报