20244207 2024-2025-2《Python程序设计》 实验二报告

20244207 2024-2025-2 《Python程序设计》实验二报告

课程:《Python程序设计》
班级: 2442
姓名: 赵文萱
学号:20244207
实验教师:王志强
实验日期:2025年4月1日
必修/选修: 公选课

1.实验内容

• 设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。
• 考核基本语法、判定语句、循环语句、逻辑运算等知识点

2. 实验过程及结果

(1)明确实验目标:
设计一个实数与复数运算的计算器程序,功能包括基础运算(+, -, *, /、//、%) 、 高级运算(^、**、!、logab)、异常处理(输入验证、除零错误、溢出处理)、交互模式(支持持续运算与用户主动退出 )。

(2)导入程序结构与模块:通过导入“math”模块,用于后续的阶乘“factoria”和对数“log”计算。用“import”语句调用标准库模块,如“math”,扩展了所设计的计算机的功能。

(3)定义核心运算函数:
①定义名为“calculate”的函数,该函数接收三个参数:两个操作数“a”“b”和一个操作符“operator”。
②在函数内部,使用“if - elif - else”判定语句来识别不同的操作符。对于基础运算,如“+”,直接返回“a + b”;“-”返回“a - b”;“*”返回“a * b” 。在处理除法“/”、整除“//”和取模“%”运算时,运用逻辑运算“!=”判断除数“b”是否为零,若“b != 0”,执行相应运算并返回结果,否则打印“除数不能为 0!”的提示信息。
③对于高级运算,当操作符为“^”时,使用“try - except”异常处理结构。在“try”块中调用“math.pow(a, b)”进行乘方运算,“except OverflowError:”捕获结果过大的异常,打印“计算结果太大了!”,“except ValueError:”捕获负数不能有小数幂的异常,打印“负数不能有小数幂!”。当操作符为“**”时,直接返回“a ** b” 。当操作符为“!”时,返回“math.factorial(a), math.factorial(b)”进行阶乘运算。当操作符为“logab”时,返回“math.log(b, a)”进行对数运算。如果遇到不支持的操作符,打印“不支持的操作符!”。

(4)构建交互循环:
使用“while True”循环语句,在循环内部,首先通过“input”函数获取用户需要进行复数运算还是实数运算的选择信息。若用户输入“复数”,则使用“input”函数获取两个复数并赋值给“a”和“b” 。若用户选择实数运算,先通过“try - except”异常处理结构,尝试获取两个实数操作数“a”和“b”,再获取操作符“operator”。如果用户输入“no”,则打印“计算器关机”并使用“break”语句退出循环。若获取操作数时发生“ValueError”异常,捕获该异常并打印“请你输入有效的数字!”。如果获取操作符不是“no”,则调用“calculate”函数进行运算,并在结果不为“None”时,打印运算表达式和结果。

(5) 使用三引号多行字符串,通过字符排版,设计并美化欢迎用户界面。

(6)进行调试运行,最终成果如下:





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

  • 问题1:除数为零引发错误。
  • 问题1解决方案:在除法相关操作前检查除数是否为零,并提示用户:
    elif operator in ["/", "%", "//"]:
    if b == 0:
    print("错误:除数不能为零!")
    return None
  • 问题2:浮点数输入后报错。
  • 问题2解决方案: 将“int()”改为“float()”,兼容浮点数输入。
  • ...

其他(感悟、思考等)

(1)课堂中学习到的条件分支、函数、循环等语法知识,在实践时还是会有运用不熟练的地方,比如对一些语句的用法掌握程度不够,以后编写时仍要先熟悉好语法知识;
(2)设计程序时要注意用户的体验,尽量考虑用户的需求,考虑多种可能的情况,做出对应的修改,比如最初设计时未考虑到除数为零的情况。
(3)本次实验让我进一步掌握了基本语法、判定语句、循环语句、逻辑运算等知识点,为后续的编写更复杂的程序打好基础,亲手编写了一个计算机程序也让我很有成就感。

posted @ 2025-04-08 17:59  赵文萱  阅读(41)  评论(1)    收藏  举报