首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将字符串转换为运算符

将字符串转换为运算符
EN

Stack Overflow用户
提问于 2009-11-16 16:00:19
回答 8查看 96.3K关注 0票数 76

如何将"+"这样的字符串转换为加号运算符?谢谢!

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-11-16 16:09:15

使用查找表:

代码语言:javascript
复制
import operator
ops = { "+": operator.add, "-": operator.sub } # etc.

print(ops["+"](1,1)) # prints 2 
票数 129
EN

Stack Overflow用户

发布于 2009-11-16 16:09:34

代码语言:javascript
复制
import operator

ops = {
    '+' : operator.add,
    '-' : operator.sub,
    '*' : operator.mul,
    '/' : operator.truediv,  # use operator.div for Python 2
    '%' : operator.mod,
    '^' : operator.xor,
}

def eval_binary_expr(op1, oper, op2):
    op1, op2 = int(op1), int(op2)
    return ops[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())))
票数 30
EN

Stack Overflow用户

发布于 2009-11-16 16:09:17

您可以尝试使用eval(),但是如果字符串不是来自您的,那么这是很危险的。否则,您可以考虑创建一个字典:

代码语言:javascript
复制
ops = {"+": (lambda x,y: x+y), "-": (lambda x,y: x-y)}

等等。然后调用

代码语言:javascript
复制
ops['+'] (1,2)

或者,对于用户输入:

代码语言:javascript
复制
if ops.haskey(userop):
    val = ops[userop](userx,usery)
else:
    pass #something about wrong operator
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1740726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档