20242115 实验二《Python程序设计》实验报告
20242115 2024-2025-2 《Python程序设计》实验二报告
课程:《Python程序设计》
班级: 2421
姓名: 叶抒宇
学号:20242115
实验教师:王志强
实验日期:2025年3月26日
必修/选修: 公选课
一、实验内容
- 设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。
二、实验过程及结果
过程:
- 在IDE中编写计算器的代码,实现了实数的加、减、乘、除、取模、指数、对数运算和复数的加、减、乘、除运算,对用户可能的输入错误进行了处理,并通过git上传至仓库中的ex2.py。
# Copyright 20242115ysy
import math
def add(a, b):
return a + b
def sub(a, b):
return a - b
def mul(a, b):
return a * b
def div(a, b):
if b == 0:
print("除数不能为0!")
return math.nan
return a / b
def mod(a, b):
if b == 0:
print("除数不能为0!")
return math.nan
return a % b
def pow(a, b):
return a ** b
print("""
★★★★★★★★★★★★★★★★★★★★
欢迎使用计算器!
©20242115叶抒宇
★★★★★★★★★★★★★★★★★★★★
""")
while True:
while True:
try:
choice = int(input("请选择工作模式:\n1. 实数\n2. 复数\n"))
except ValueError:
print("输入错误!")
continue
break
if choice == 1:
while True:
try:
num1 = float(input("请输入一个实数:"))
except ValueError:
print("输入错误!")
continue
break
op = input("请输入运算符(+,-,*,/,%,log):")
while True:
try:
num2 = float(input("请输入另一个实数:"))
except ValueError:
print("输入错误!")
continue
break
elif choice == 2:
while True:
try:
num1 = complex(input("请输入一个复数(a+bj):"))
except ValueError:
print("输入错误!")
continue
break
op = input("请输入运算符(+,-,*,/):")
while True:
try:
num2 = complex(input("请输入另一个复数(a+bj):"))
except ValueError:
print("输入错误!")
continue
break
else:
print("输入错误,请重新输入!")
continue
if op == "+":
result = add(num1, num2)
elif op == "-":
result = sub(num1, num2)
elif op == "*":
result = mul(num1, num2)
elif op == "/":
result = div(num1, num2)
elif op == "%" and choice == 1:
result = mod(num1, num2)
elif op == "^" and choice == 1:
result = pow(num1, num2)
elif op == "log" and choice == 1:
result = math.nan
print("log_{", num1, "}", num2, "=", math.log(num2, num1))
else:
print("非法运算符!")
continue
if not math.isnan(result):
print(num1, op, num2, "=", result)
confirm = input("是否继续?(Y/N)")
if not (confirm == "Y" or confirm == "y"):
break
结果:程序运行正常,代码已上传。

三、实验过程中遇到的问题和解决过程
- 问题1:使用
False标记不输出的result,结果为0时会误判 - 问题1解决方案:Python中
False与0相等,改用math.nan - 问题2:直接判断
result != math.nan永远为True - 问题2解决方案:Python中
math.nan不可比较,改用math.isnan(result)
其他(感悟、思考等)
- Python可以直接处理复数,相比C语言等更便捷,可见它在科研领域较有优势。
- 在处理NaN的时候要注意NaN是不可比较的。
- 应考虑用户输入错误的情况,并作出处理,提升程序健壮性。
while True:
try:
num1 = float(input("请输入一个实数:"))
except ValueError:
print("输入错误!")
continue
break
浙公网安备 33010602011771号