20241307 实验二 《Python程序设计》实验报告
20241307 2024-2025-2 《Python程序设计》实验二报告
课程:《Python程序设计》
班级: 2413
姓名: 张岳峰
学号:20241307
实验教师:王志强
实验日期:2025年3月26日
必修/选修: 公选课
1.实验内容
1.设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。
2.考核基本语法、判定语句、循环语句、逻辑运算等知识点
2. 实验过程及结果
1、跟着强哥的思路设计并编写一个简单的初阶计算器
代码如下:
代码解读
1. 显示欢迎信息
print("""
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
欢迎使用yuefen牌计算器
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
版权zyf
开发时间:2025.3.26
本产品仅适用于中小学生!严禁满18岁的大学生使用。
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
""")
- 解释:运用三引号
"""
来定义一个多行字符串,涵盖了计算器的欢迎信息、版权信息、开发时间等整活内容。借助print
函数把这个多行字符串输出到控制台,从而展示这些信息。
2. 导入模块
import math
- 解释:导入 Python 的
math
模块,该模块提供了诸多数学函数,后续代码会用到其中的log
函数。
3. 定义基本运算函数
def jia(num1, num2):
return num1 + num2
def jian(num1, num2):
return num1 - num2
def chen(num1, num2):
return num1 * num2
def chu(num1, num2):
if num2 == 0:
print("除数不能为0")
return 0
return num1 / num2
def logab(a,b):
return math.log(a,b)
- 解释:
jia
函数:对两个数执行加法操作并返回结果。jian
函数:对两个数执行减法操作并返回结果。chen
函数:对两个数执行乘法操作并返回结果。chu
函数:对两个数执行除法操作,若除数为 0 则打印错误信息并返回 0,否则返回商。logab
函数:借助math.log
函数计算以b
为底a
的对数并返回结果。
4. 主循环控制
flag = True
while flag:
- 解释:定义变量
flag
并初始化为True
。利用while
循环,只要flag
为True
,循环就会持续执行。
5. 选择运算类型
leixin = input("请问:需要复数(1)还是整数(2)运算?\n")
if leixin == "1":
num1 = complex(input("请输入一个复数:"))
num2 = complex(input("请输入另一个复数:"))
elif leixin == "2":
num1 = int(input("请输入一个整数:"))
num2 = int(input("请输入另一个整数:"))
elif leixin != "1" and leixin != "2":
print("请选择正确的类型")
continue
- 解释:运用
input
函数让用户选择是进行复数运算还是整数运算。若用户输入1
,则使用complex
函数将用户输入转换为复数类型。若用户输入2
,则使用int
函数将用户输入转换为整数类型。若用户输入既不是1
也不是2
,则打印错误信息并使用continue
语句跳过本次循环,重新等待输入。
6. 选择运算符并计算
choice = input("请输入运算符(+-*/ log):")
if choice == "+":
print("num1 ", choice, " num2 = ", jia(num1, num2))
elif choice == "-":
print("num1 ", choice, " num2 = ", jian(num1, num2))
elif choice == "*":
print("num1 ", choice, " num2 = ", chen(num1, num2))
elif choice == "/":
print("num1 ", choice, " num2 = ", chu(num1, num2))
elif choice == "log":
print("log以", num2, "为底", num1, "的对数 = ", logab(num1, num2))
- 解释:运用
input
函数让用户输入运算符。根据用户输入的运算符,调用相应的函数进行计算,并将结果输出。
7. 询问是否继续
conti = input("是否继续?Y/N\n")
if conti == "Y" or conti == "y":
flag = True
else:
flag = False
- 解释:运用
input
函数询问用户是否继续进行计算。若用户输入Y
或y
,则将flag
设为True
,继续循环;否则将flag
设为False
,结束循环。
调试一下,问了强哥给我演示学会了在PyCharm用debug设置断点,有问题可以检索到哪一条代码的结果出了问题:
加入自己的小版权,运行一下看看有没有问题:
2.初阶计算器功能比较少,只有加减乘除和取对数,界面不是很美观,联想起来学C语言的时候制作分数统计系统的界面,设计了一种简洁的操作界面,并加入了幂运算、开方的计算,丰富了功能
代码如下:
功能实现过程如下:
1. 导入模块
import math
此语句导入了 Python 的 math
模块,该模块提供了众多数学函数,后续代码会用到其中的 sqrt
和 log
函数。
2. 定义基本数学运算函数
def add(x, y):
return x + y
def subtract(x, y):
return x - y
def multiply(x, y):
return x * y
def divide(x, y):
if y == 0:
return "Error: division by zero"
return x / y
def power(x, y):
return x ** y
def square_root(x):
if x < 0:
return "Error: square root of a negative number"
return math.sqrt(x)
def logarithm(x, base):
if x <= 0 or base <= 0 or base == 1:
return "Error: invalid input for logarithm"
return math.log(x, base)
add
函数:对两个数执行加法操作并返回结果。subtract
函数:对两个数执行减法操作并返回结果。multiply
函数:对两个数执行乘法操作并返回结果。divide
函数:对两个数执行除法操作,若除数为 0 则返回错误信息,否则返回商。power
函数:计算一个数的指定次幂并返回结果。square_root
函数:计算一个数的平方根,若该数为负数则返回错误信息,否则使用math.sqrt
函数计算并返回结果。logarithm
函数:计算一个数的指定底数的对数,若输入不符合对数定义,比如N<0则返回错误信息,否则使用math.log
函数计算并返回结果。
3. 主循环
while True:
print("选择运算:")
print("1. 加法")
print("2. 减法")
print("3. 乘法")
print("4. 除法")
print("5. 幂运算")
print("6. 开方")
print("7. 对数运算")
print("8. 退出")
choice = input("输入你的选择(1/2/3/4/5/6/7/8): ")
运用 while True
创建一个无限循环,持续在主界面展示操作选项。借助 print
函数显示可供选择的数学运算和退出选项。利用 input
函数获取用户的选择并存储于 choice
变量中。
4. 退出程序
if choice == '8':
print("程序已退出。")
break
若用户输入的选择为 8,则打印退出信息并使用 break
语句跳出循环,从而结束程序。
5. 处理需要两个操作数的运算
if choice in ('1', '2', '3', '4', '5'):
try:
num1 = float(input("输入第一个数字: "))
num2 = float(input("输入第二个数字: "))
except ValueError:
print("输入无效,请输入有效的数字。")
continue
if choice == '1':
print(num1, "+", num2, "=", add(num1, num2))
elif choice == '2':
print(num1, "-", num2, "=", subtract(num1, num2))
elif choice == '3':
print(num1, "*", num2, "=", multiply(num1, num2))
elif choice == '4':
print(num1, "/", num2, "=", divide(num1, num2))
elif choice == '5':
print(num1, "**", num2, "=", power(num1, num2))
若选择的是 1 - 5 中的某个选项,程序会尝试获取两个数字作为操作数。运用 try-except
语句捕获输入非数字的情况,若出现异常问题则打印错误信息并使用 continue
语句跳过本次循环,重新等待用户输入。根据用户的选择调用相应的函数进行计算,并输出结果。
6. 处理开方运算
elif choice == '6':
try:
num = float(input("输入要开方的数字: "))
except ValueError:
print("输入无效,请输入有效的数字。")
continue
print(f"√{num} = {square_root(num)}")
若用户选择 6,程序会尝试获取一个数字。同样使用 try-except
语句处理错误的输入,若输入有错则跳过本次循环。调用 square_root
函数计算平方根并输出结果。
7. 处理对数运算
elif choice == '7':
try:
num = float(input("输入真数: "))
base = float(input("输入底数: "))
except ValueError:
print("输入无效,请输入有效的数字。")
continue
print(f"log{base}({num}) = {logarithm(num, base)}")
若选择 7,程序读取输入的真数和底数。利用 try-except
语句处理错误输入,若输入无效则跳过本次循环。调用 logarithm
函数计算对数并输出结果。
8. 处理无效选择
else:
print("无效的选择,请重新输入。")
若输入的选择不在 1 - 8 的范围内,程序会打印错误信息并重新等待用户输入。
调试一下:
运行结果如图:
3.上传至个人gitee码云仓库托管:
3. 实验过程中遇到的问题和解决过程
- 问题1:无法上传至git库,一上传就报错,上传成功在个人gitee仓库也找不到代码
- 问题1解决方案:在实验一配置过的项目创建新的python程序文件,重新链接git库上传并推送源程序,查询资料得知应该以管理员身份运行PyCharm才能上传。
- 问题2:不太了解python中利用while语句实现重复计算界面的语法用法
- 问题2解决方案:看教材、询问豆包帮我纠正代码错误,并学习到了while语句在python的正确用法
和C语言whlie语句区别具体如下:
- 问题3:不了解python数学库特殊运算函数的接口
- 问题3解决方案:问了豆包学习了python中的数学运算,并在此基础上学习了逻辑运算、赋值运算、比较运算等运算语句,具体如下:
- 问题4:math库不支持复数的运算
- 问题4解决方案:问了豆包学习了python中的复数运算,得知处理复数运算的有专门的cmath库,使用cmath库成功处理复数进阶运算。
其他(感悟、思考等)
编写python代码时设计算法其实和c语言很像,甚至有相同的逻辑,这就是快速学习的基础。只需要了解python各个功能实现的语句,函数接口,和语法便可以运用学习C语言是高效的算法来实现。python的功能比C语言要更丰富一些,甚至可以对文字赋值运算。平时碰到代码报错不要直接给AI询问错误,逐渐尝试并熟练掌握Debug设置断点,可以自己分析并解决问题。AI可以大大提高资料搜索的效率,比翻书查找快很多,可以针对自己的问题给出解决方法和知识,学会合理运用AI,极大的提升学习效率,更快更好地掌握编程能力。