3 回答
TA贡献1836条经验 获得超5个赞
使用查找表:
import operator
ops = { "+": operator.add, "-": operator.sub } # etc.
print ops["+"](1,1) # prints 2
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()))
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
添加回答
举报