如何将"+"
这样的字符串转换为加号运算符?谢谢!
发布于 2009-11-16 16:09:15
使用查找表:
import operator
ops = { "+": operator.add, "-": operator.sub } # etc.
print(ops["+"](1,1)) # prints 2
发布于 2009-11-16 16:09:34
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())))
发布于 2009-11-16 16:09:17
您可以尝试使用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
https://stackoverflow.com/questions/1740726
复制相似问题