20212312 2023-2024-2 《Python程序设计》实验二报告

20212312应万里 2024-04-03 11:34:26

20212312 2023-2024-2 《Python程序设计》实验二报告

课程:《Python程序设计》
班级: 2123
姓名: 应万里
学号:20212312
实验教师:王志强
实验日期:2024年3月27日
必修/选修: 公选课

1.实验内容

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

2. 实验过程及结果

编写运算方法

img

img

  • 加减乘除基础运算:使用eval方法直接运算表达式

  • 三角函数、对数、指数运算:使用math库中的函数方法运算结果

    表达式处理逻辑

img

img

  • 对按钮进行遍历,由于对数函数log的运算逻辑需要额外弹窗和其他函数不同,所以我们为log单独做一个跳转语句

  • command函数的目的是根据用户点击的按钮类型,更新输入框的内容,以便执行计算、清除输入框或者帮助用户输入数学函数表达式

    极其理工的UI设计

buttons = [
    ('7', 1, 0), ('8', 1, 1), ('9', 1, 2),
    ('4', 2, 0), ('5', 2, 1), ('6', 2, 2),
    ('1', 3, 0), ('2', 3, 1), ('3', 3, 2), ('0', 4, 1),
    ('+', 1, 3), ('-', 2, 3), ('*', 3, 3), ('/', 4, 3),
    ('.', 4, 0), 
    ('=', 4, 2), ('C', 4, 4), ('sin', 5, 0), ('cos', 5, 1), ('tan', 5, 2),
    ('ln', 5, 3), ('log', 5, 4)
]

运算结果

见视频~~~

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

  • 问题1:如何处理不同操作按钮的运算逻辑,计算器上的不同按钮,比如加减乘除和三角函数以及对数运算的输入格式都不一样,该怎么处理呢,如何将归零和等号与运算符号分开?
  • 问题1解决方案:将不同按钮处理逻辑分类:

1.运算符号:
①+、-、*、/(需要多个输入参数):使用eval方法运算字符串表达式
②sin、cos、tan、ln(需要单个参数):使用math库中的函数
③log(需要两个参数且需要区分真数和底数):单独做一个弹窗
2.功能符号:
①=:调用计算函数
②C:清空输入框

其中:1.与2.之间用command(x)区分是否需要在输入框中追加运算参数or运算符号还是运算输入框或者清空输入框。

完整源代码和可执行程序

20212312test2

其他(感悟、思考等)

 在设计和实现一个具有不同功能按钮的计算器时,我们面临着如何高效地处理各种运算逻辑和用户输入的挑战。通过这个实验,我实现了如何将复杂的运算需求分解成可管理的部分,并设计了一个直观且用户友好的界面来处理各种数学运算。我得到了下面几点体会
  1. 分类处理逻辑的重要性
    将计算器上的按钮分为运算符号和功能符号是实现复杂功能的关键。这种分类不仅使得代码结构更清晰,而且还提高了代码的可维护性。运算符号包括基本的加减乘除和更高级的数学函数,如三角函数和对数函数,每种运算都有其特定的输入格式和处理逻辑。功能符号则负责非运算操作,如清空输入框或执行计算。
  2. 动态输入和计算的灵活性
    使用eval方法处理基本算术运算提供了一种动态解析和执行字符串表达式的方式。这种方法虽然强大,但在实际应用中需要谨慎使用,以避免执行不安全的代码。对于特定的数学函数,如sin、cos、tan和ln,则需要调用Python的math库。这些函数通常接受单个参数,并返回计算结果。对于更复杂的函数,如log,需要从用户那里获取两个参数(真数和底数),这通过一个简单的弹窗实现,进一步增强了用户交互性。
  3. 用户界面的直观性
    设计一个直观的用户界面对于提高用户体验至关重要。通过为不同的操作提供明确的视觉提示和易于理解的输入方式,可以大大减少用户的学习曲线。例如,为三角函数和对数运算提供专门的按钮,并通过弹窗引导用户输入必要的参数,这样的设计既直观又高效。
  4. 错误处理的必要性
    在用户进行输入和计算时,错误是不可避免的。有效的错误处理机制不仅能够提升用户的信心,还能避免程序因异常而崩溃。在本实验中,通过捕获异常并在输入框中显示错误消息,提供了一种用户友好的方式来通知用户问题所在,从而允许用户更正输入,而不是让程序处于不稳定状态。

参考资料

...全文
71 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

110

社区成员

发帖
与我相关
我的任务
社区描述
人生苦短,我用Python!
python3.11 高校
社区管理员
  • blackwall0321
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧