[英]Beginner - TypeError: 'dict' object is not callable
我正在尝试使用“ lambda”作为运算符的选项来构建计算器。 问题是-我找不到打印它的方法,这样当所有这些都等于用户选择的值时,我将使用用户选择的2个数字和列表中的一个运算符来获得答案。
我知道我可以为每个运算符分别使用'if'和'elif'来解决此问题,但我故意要使用'lambda'。 我这样做是为了学习如何以这种方式使用此功能,并且还允许我或以后希望使用它的任何人更轻松快捷地添加运算符。
def InputNumber(message):
while True:
try:
userinput = int(input(message))
except ValueError:
print("Not an integer! Please try again.")
else:
return userinput
operators = {
"+": lambda n: num1 + num2,
"*": lambda n: num1 * num2,
"-": lambda n: num1 - num2,
"/": lambda n: num1 / num2,
}
def cal_fund(message):
while True:
operator = (input("Please enter your operation (+, -, *, /): "))
if operator in list(operators.keys()):
return operator
else:
print("Not an operation! Please try again.")
while True:
num1 = InputNumber("Please enter a number: ")
opera = cal_fund("Please enter your operation (+, -, *, /): ")
num2 = InputNumber("Please enter another number: ")
print(operators(num1, num2))
print("-" * 15)
现在,这是我得到的错误(我知道问题是我使用字典,但没有找到用于此特定方式的其他任何东西):
Traceback (most recent call last):
File "", line 34, in <module>
print(operators(num1, num2))
TypeError: 'dict' object is not callable
问题 :
operators
是无法调用的字典。 因此,不允许使用operators(..)
。
字典中的lambda
值应接收两个值,以使操作正常进行。
解决 :
将字典更新为:
operators = {
"+": lambda num1, num2: num1 + num2,
"*": lambda num1, num2: num1 * num2,
"-": lambda num1, num2: num1 - num2,
"/": lambda num1, num2: num1 / num2,
}
然后使用:
print(operators[opera](num1, num2))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.