把字符串变成运算符

如何将诸如“ +”之类的字符串转换成运算符plus?谢谢!



Helenr
浏览 754回答 3
3回答

一只甜甜圈

使用查找表:import operatorops = { "+": operator.add, "-": operator.sub } # etc.print ops["+"](1,1) # prints 2 

慕的地8271018

import operatordef get_operator_fn(op):    return {        '+' : operator.add,        '-' : operator.sub,        '*' : operator.mul,        '/' : operator.div,        '%' : operator.mod,        '^' : operator.xor,        }[op]def eval_binary_expr(op1, oper, op2):    op1,op2 = int(op1), int(op2)    return get_operator_fn(oper)(op1, op2)print eval_binary_expr(*("1 + 3".split()))print eval_binary_expr(*("1 * 3".split()))print eval_binary_expr(*("1 % 3".split()))print eval_binary_expr(*("1 ^ 3".split()))

慕妹3242003

您可以尝试使用eval(),但是如果字符串不是来自您的话,则很危险。另外,您可以考虑创建字典:ops = {"+": (lambda x,y: x+y), "-": (lambda x,y: x-y)}等等...然后打电话ops['+'] (1,2)或者,供用户输入:if ops.haskey(userop):    val = ops[userop](userx,usery)else:    pass #something about wrong operator
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python