python - 如何更正不可调用的 str?
问题描述
遵循 udemy 课程,我陷入了这个“'str object is not callable”错误。我基本上已经复制并粘贴了给我一个问题的代码片段,但它仍然产生相同的错误。还没有找到任何与我遇到的确切问题有关的东西,但如果这是一个非常简单的修复,我不会感到惊讶!
问题在于“ops_function”位抛出“str”对象不可调用错误。
如果您需要更多信息,请告诉我,并感谢您的任何见解!
from art import logo
print(logo)
def add(a, b):
return a + b
def subtract(a, b):
return a - b
def multiply(a, b):
return a * b
def divide(a, b):
return a / b
operations = {
"+": "add",
"-": "subtract",
"*": "multiply",
"/": "divide"
}
first = int(input("Enter a number: "))
second = int(input("Enter another number: "))
for op in operations:
print(op)
op_choice = input("Select an operator from the list above: ")
ops_function = operations[op_choice]
answer = ops_function(first, second)
print(f"{first} {op_choice} {second} = {answer}")
解决方案
您的operations
字典将字符串映射到字符串。您希望它将字符串映射到函数。例如,"add"
是一个字符串,whileadd
是一个函数。实际上,"add"(first, second)
当您想要的是add(first, second)
. 所以operations
改为:
operations = {
"+": add,
"-": subtract,
"*": multiply,
"/": divide
}
即从函数名称中删除引号。这样它们将成为函数而不是字符串。
推荐阅读
- python - 回归模型在训练时间上给出了 nan 或 inf?
- c++ - 反转字符串中的单词,我不知道为什么会得到这个输出
- node.js - TypeError:inspect(...).addField 不是函数
- javascript - 如何将 url 添加到这个 var 引号列表中?
- esbuild - 无法解析 esbuild 入口点
- javascript - 在 typeorm express 中多对多更新数据
- xamarin - 在 Xamarin c# 中以 .bmp 格式保存裁剪的图像
- templates - 带有 if 条件库存名称的 ansible 模板
- webpack - 在 webpack 5 中保留子目录
- opengl - PTB-OpenGL 立体渲染和眼睛分离值