20252428实验二《Python程序设计》实验报告

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

  • 课程:《Python程序设计》
  • 班级:2528
  • 姓名:代林淞
  • 学号:20252428
  • 实验教师:王志强
  • 实验日期:2026年4月13日
  • 必修/选修:公选课

1. 实验内容

(1) 编写计算器程序

设计并完成两个计算器程序:

  1. 简易命令行计算器calculator_cli.py)- 完成加减乘除模等基本运算
  2. 完整科学计算器calculator.py)- 提供图形界面,支持高级数学函数运算

考核基本语法、判定语句、循环语句、逻辑运算等知识点。

(2) 用LLM生成计算器程序

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

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


2. 实验过程及结果

(1) 自主编写的命令行计算器程序(calculator_cli.py)

a = float(input("请输入第一个数: "))
op = input("请输入运算符(+ - * / %): ")
b = float(input("请输入第二个数: "))

if op == "+":
    print("结果:", a + b)
elif op == "-":
    print("结果:", a - b)
elif op == "*":
    print("结果:", a * b)
elif op == "/":
    if b == 0:
        print("错误:不能除以零")
    else:
        print("结果:", a / b)
elif op == "%":
    if b == 0:
        print("错误:不能取模零")
    else:
        print("结果:", a % b)
else:
    print("无效运算符")

代码说明

  • 第4行:获取第一个操作数,使用float()转换为浮点数
  • 第5行:获取运算符
  • 第6行:获取第二个操作数
  • 第9-24行:根据运算符使用if-elif语句进行相应计算
  • 第16行、第21行:用if语句判定除数或模数是否为0,避免除零错误

运行结果

运行结果截图placeholder
注:图片链接已失效,请在实际报告中替换为实际截图


(2) 科学计算器程序(calculator.py)核心代码分析

该程序包含以下主要模块:

① BasicOperations类 - 基础运算

class BasicOperations:
    @staticmethod
    def add(a, b): return a + b
    
    @staticmethod
    def subtract(a, b): return a - b
    
    @staticmethod
    def multiply(a, b): return a * b
    
    @staticmethod
    def divide(a, b):
        if b == 0:
            raise ValueError("Cannot divide by zero")
        return a / b
    
    @staticmethod
    def modulo(a, b):
        if b == 0:
            raise ValueError("Cannot compute modulo with zero")
        return a % b
    
    @staticmethod
    def integer_divide(a, b): return a // b
    
    @staticmethod
    def power(a, b): return math.pow(a, b)

② ScientificOperations类 - 科学运算

  • 三角函数sin, cos, tan, asin, acos, atan(支持角度/弧度切换)
  • 双曲函数sinh, cosh, tanh
  • 对数函数log, log10, ln
  • 其他sqrt, nth_root, factorial, abs, exp

③ Converter类 - 进制转换

  • to_binary:十进制转二进制
  • to_octal:十进制转八进制
  • to_hex:十进制转十六进制

④ Tokenizer和Parser类 - 表达式解析

  • 将输入的数学表达式解析为token序列
  • 支持运算符优先级和括号

⑤ CalculatorApp类 - GUI界面

使用tkinter创建完整的图形界面,包含:

  • 数字按钮 0-9
  • 运算符按钮 + - * / %
  • 科学函数按钮 sin cos tan log sqrt 等
  • 存储器按钮 MC MR M+ M-
  • 历史记录面板
  • 键盘快捷键支持

运行结果(通过Python测试验证):

运行结果截图placeholder
注:图片链接已失效,请在实际报告中替换为实际截图


(3) 两个程序的对比分析

特性 calculator_cli.py calculator.py
界面 命令行界面 图形界面(GUI)
功能 5种基本运算 20+种运算(含科学计算)
代码量 26行 833行
可用性 简单,适合学习 功能完整,实用性强
错误处理 基本的除零检查 完善的异常处理

与LLM生成的程序相比

  • calculator.py 程序更加美观和便利,有独特的图形界面,模拟真实的计算器产品
  • calculator.py 程序合理利用面向对象编程,结构清晰
  • calculator_cli.py 程序简单易懂,适合初学者学习基本语法

(4) 将代码托管到Gitee上

Gitee托管截图placeholder
注:图片链接已失效,请在实际报告中替换为实际截图


3. 实验过程中遇到的问题和解决过程

(本节内容待补充)


4. 其他(感悟、思考等)

通过本次实验,我掌握了以下知识和技能:

  • Python基本语法:变量定义、类型转换、input()print()输入输出
  • 条件判断if-elif-else语句的使用
  • 算术运算符+, -, *, /, %, //, ^ 的使用
  • 面向对象编程:类的定义和方法的使用
  • 模块导入import math
  • 异常处理try-except语句的使用

通过对比两种计算器程序,我认识到:

  • 简单的CLI程序适合学习基本语法和逻辑
  • 复杂的GUI程序需要更好的代码组织和架构
  • LLM可以辅助生成高质量代码,但要理解其原理才能有效使用

参考资料

posted @ 2026-04-18 17:16  Doglists  阅读(5)  评论(0)    收藏  举报