Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:如何使用字典将运算符的字符串表示形式指定给数学运算符?_Python_Dictionary_User Defined Functions - Fatal编程技术网

Python:如何使用字典将运算符的字符串表示形式指定给数学运算符?

Python:如何使用字典将运算符的字符串表示形式指定给数学运算符?,python,dictionary,user-defined-functions,Python,Dictionary,User Defined Functions,我的目标是创建一个做简单算术的UDF。我希望函数取2个值,然后是运算符的字符串表示形式,例如“mulitiply”,并在x到y上执行运算符。这是我第一次尝试这样做,请原谅我弄得一团糟 def_myArithmetic(x, y, op): op={'multiply': *, 'divide': /, 'add': +, 'subtract':-} **some loop** **return calculation** 到目前为止我所做的 import

我的目标是创建一个做简单算术的UDF。我希望函数取2个值,然后是运算符的字符串表示形式,例如“mulitiply”,并在x到y上执行运算符。这是我第一次尝试这样做,请原谅我弄得一团糟

def_myArithmetic(x, y, op):
     op={'multiply': *, 'divide': /, 'add': +, 'subtract':-}
     **some loop**
         **return calculation**

到目前为止我所做的

import operator
def do_arithmetic(x, y, op):
  op={'multiply': operator.multiply,'divide': operator.divide,'add': operator.add ,'subtract': operator.subtract}
  for i in range(x,y):
     print (x, y)
使用此代码块在调用函数时返回错误

我知道这本词典不能用。我相信这与在一个引用中有多个键有关

我相信我写得差不多,但显然不知道怎么写。当我尝试实施我选择的规则时,有一些参考资料将非常有帮助


感谢您的反馈

您的字典变量正在替换
op
参数。请为此使用其他名称

您需要使用string参数作为键来访问相应的dictionary元素

您需要调用运算符函数,而不仅仅是将其放入带有参数的元组中

没有理由使用
for
循环

没有
运算符。乘法
,它是
运算符.mul
。找到完整的列表


使用模块
operator.add
operator.mul
,等等。我可以问一下UDF中的一个例子吗?
{'multiply':operator.mul,}
您的字典是正确的方法,您只需要使用这些函数作为值。这非常有用,谢谢Barmar。这非常有用,非常感谢Barmar!。我4天前才开始编写代码。这使大量的阅读变成了实践。
def do_arithmetic(x, y, op):
    operations = {
        'multiply': operator.mul,
        'divide': operator.truediv,
        'add': operator.add,
        'subtract': operator.sub
    }
    return operations[op](x, y)