我正在尝试实现一个简单的数学游戏,其中用户被给予随机数和运算符,然后他们必须找出答案,我在互联网上找到建议使用运算符模块的源,这就是为什么我使用它,如果有是一种更有效/更容易实现这一目标的方法我非常乐于解释 .
基本上我想删除这个可怕的 <built-in function add>
并通过说'+'或'add'交换它更加用户友好,沿着那些线但我不断得到错误'TypeError: ' bool ' object is not callable - python',我真的不知道这意味着什么,我是新来的python我非常困惑 .
from operator import add, sub, mul, floordiv
operators = (add == str("add"), sub == str("subtract"), mul == str("multiply"), floordiv == str("divide"))
operator = random.choice(operators)
answer = operator(number1, number2)
question = print("What is ", number1, operator, number2, "?")
4 回答
您需要两个单独的东西:运算符的字符串表示和运算符本身 . 您可以使用字典来存储函数和相应的字符串表示:
你得到的第一行的结果是
或者那些行中的东西 .
然后你试图调用一个布尔值来获取你拥有的异常 .
add == str("add")
将评估为False
,因为您正在尝试将函数与字符串进行比较 .我假设你正在尝试实现一个简单的数学游戏,因此不使用
operator
,实际上是数学运算函数,你可以使用一个简单的dictonary:这是使用元组而不是dicts的实现,我以更多方式添加来表示每个操作 .
Output
你在这里尝试做的当然是可能的 . 上面的元组的形成不会返回任何有用的东西 . 字典更合适 .
您可以将字典构造为:
这为您提供了相关字符串和函数的字典 . 您可以选择随机运算符名称(这将给出字符串值, not 运算符本身 .
然后计算答案:
这通过“搜索”其字符串伙伴来从运算符字典中获取运算符函数 .
总共现在(有一些数字,所以它运行蝙蝠):
(我这是用2.7)