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
添加回答
舉報