为了账号安全,请及时绑定邮箱和手机立即绑定

把字符串变成运算符

把字符串变成运算符

Helenr 2019-11-02 13:23:35
如何将诸如“ +”之类的字符串转换成运算符plus?谢谢!
查看完整描述

3 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

使用查找表:


import operator

ops = { "+": operator.add, "-": operator.sub } # etc.


print ops["+"](1,1) # prints 2 


查看完整回答
反对 回复 2019-11-02
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

import operator


def 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()))


查看完整回答
反对 回复 2019-11-02
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

您可以尝试使用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


查看完整回答
反对 回复 2019-11-02
  • 3 回答
  • 0 关注
  • 753 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信