如何使用四个匿名函数实现一个简单的计算器,能够处理用户输入的任意两个数字并执行加减乘除运算,同时确保在遇到非法输入(如不输入数字)或可能导致NaN的结果时能给出正确的错误提示或处理方式?请参照教材P54的相关内容来完成代码,并解释如何防止计算出NaN值。
时间: 2024-10-27 16:10:33 浏览: 31
要实现一个简单的计算器,你可以使用Python语言,它支持函数作为其他函数的参数,这被称为高阶函数。我们可以设计四个匿名函数(lambda表达式),分别对应加法、减法、乘法和除法操作。这里是一个基本的实现:
```python
def calculator():
# 定义四个匿名函数,用于四种基本运算
add = lambda x, y: x + y
subtract = lambda x, y: x - y
multiply = lambda x, y: x * y if y != 0 else "错误:除数不能为零"
divide = lambda x, y: x / y if y != 0 else "错误:除数不能为零"
# 用户输入处理
while True:
try:
num1 = float(input("请输入第一个数字(按q退出): "))
operator = input("请选择运算符(+, -, *, /): ")
num2 = float(input("请输入第二个数字: "))
# 根据用户选择调用相应的匿名函数
result = {
"+": add,
"-": subtract,
"*": multiply,
"/": divide,
}[operator](num1, num2)
print(f"结果: {result}")
except ValueError:
print("错误:请输入有效的数字.")
except KeyError:
print("错误:无效的运算符.")
calculator()
```
在这个代码中,我们通过`try-except`块处理可能出现的错误。`ValueError`会捕获非数字输入,而`KeyError`会在尝试调用不存在的运算符时被捕获。对于可能会导致`NaN`的除数为零的情况,我们在`multiply`和`divide`函数内部做了特判,如果除数为零,则返回错误信息。
阅读全文