【练习】计算器
项目简介
计算器
知识模块
- Python 编程语言
知识点
- 异常处理
- 分支语句-if
- 函数返回值与参数处理
受众
- 初级测试开发工程师
- 初级Python开发工程师
作业要求
编写一个Python程序,可以执行加法、减法、乘法和除法操作。用户可以输入两个数字和运算符,然后计算并输出结果。实现计算器的功能(+、-、*、/),并处理异常情况,比如:输入的不是数字、除数为0等。
解题思路
-
定义一个函数,接收两个数字和一个操作符,并返回计算结果。
-
使用异常处理来捕获并处理可能发生的异常情况并输出错误消息。
完整代码
def calculate(num1, num2, operator):
if operator == '+':
return num1 + num2
elif operator == '-':
return num1 - num2
elif operator == '*':
return num1 * num2
elif operator == '/':
return num1 / num2
else:
return None
# 主程序
while True:
try:
# 获取用户输入的数值和运算符
num1 = float(input("请输入第一个数:"))
operator = input("请输入运算符号(+、-、*、/):")
num2 = float(input("请输入第二个数:"))
# 调用calculate函数执行运算,并输出结果
result = calculate(num1, num2, operator)
if result is not None:
print("计算结果为:", result)
else:
print("输入的运算符号不正确,请重新输入!")
# 询问用户是否继续运算
flag = input("是否继续运算?(Y/N)")
if flag == 'N' or flag == 'n':
break
except ZeroDivisionError:
print("错误:除数不能为零")
except ValueError:
print("错误:请输入有效的数字")
except Exception as e:
print("发生异常:",e)
finally:
print("程序结束。")
代码讲解
-
代码
def calculate(num1, num2, operator): if operator == '+': return num1 + num2 elif operator == '-': return num1 - num2 elif operator == '*': return num1 * num2 elif operator == '/': return num1 / num2 else: return None
- 定义了一个名为
calculate
的函数,该函数接受两个数字和一个操作符作为参数。 - 根据操作符执行相应的运算,然后返回结果。如果操作符不是支持的运算符,返回
None
- 定义了一个名为
-
while True
:定义了一个无限循环,意味着程序会一直执行循环内的代码,直到遇到break
语句。 -
try
:用于捕获可能发生的异常。 -
result = calculate(num1, num2, operator)
:调用calculate()
函数,并传递参数,将返回的结果赋值给result
。 -
except ZeroDivisionError
:用于捕获ZeroDivisionError
异常,即除数为零的情况。 -
except ValueError
:用于捕获ValueError
异常,即用户输入无效的数字。 -
except Exception as e
:用于捕获其他类型的异常。异常的详细信息会被存储在变量e
中。 -
finally
:不论是否发生异常,都会执行 finally 块中的代码。