web-dev-qa-db-ja.com

Pythonの変数に演算子を割り当てますか?

数学を変数に適用する通常の方法は次のとおりです。

a * b

このように2つのオペランドを計算して操作することはできますか?

a = input('enter a value')
b = input('enter a value') 
op = raw_input('enter a operand')

次に、opと2つの変数abを接続するにはどうすればよいですか?
opを+-%$と比較して、割り当てて計算できることはわかっています。

しかし、a op bのようなことを行うことはできますか?opが演算子であることをコンパイラに伝える方法はありますか?

32

演算子モジュールと辞書を使用できます。

import operator
ops = {
    "+": operator.add,
    "-": operator.sub,
    "*": operator.mul,
    "/": operator.div
}   
op_char = input('enter a operand')
op_func = ops[op_char]
result = op_func(a, b)
48

演算子モジュール http://docs.python.org/library/operator.html は、実質的にすべてのPython演算子に対応する関数を公開します。演算子記号をそれらにマップできます関数を使用して適切な関数を取得し、それをop変数に割り当てて、op(a、b)を計算します。

6
Luciano Ramalho