首页 > 解决方案 > 如何更正不可调用的 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}")

标签: python

解决方案


您的operations字典将字符串映射到字符串。您希望它将字符串映射到函数。例如,"add"是一个字符串,whileadd是一个函数。实际上,"add"(first, second)当您想要的是add(first, second). 所以operations改为:

operations = {
    "+": add,
    "-": subtract,
    "*": multiply,
    "/": divide
}

即从函数名称中删除引号。这样它们将成为函数而不是字符串。


推荐阅读