比較する数値とともに、数学演算子を関数に渡したいと思います。これが私の壊れたコードです:
def get_truth(inp,relate,cut):
if inp print(relate) cut:
return True
else:
return False
そしてそれを呼び出す
get_truth(1.0,'>',0.0)
True を返す必要があります。
比較する数値とともに、数学演算子を関数に渡したいと思います。これが私の壊れたコードです:
def get_truth(inp,relate,cut):
if inp print(relate) cut:
return True
else:
return False
そしてそれを呼び出す
get_truth(1.0,'>',0.0)
True を返す必要があります。
operator モジュールを見てください:
import operator
get_truth(1.0, operator.gt, 0.0)
...
def get_truth(inp, relate, cut):
return relate(inp, cut)
# you don't actually need an if statement here
モジュールを使用しoperator
ます。これには、Python で使用できるすべての標準演算子が含まれています。次に、演算子を関数として使用します。
import operator
def get_truth(inp, op, cut):
return op(inp, cut):
get_truth(1.0, operator.gt, 0.0)
本当に文字列を演算子として使用したい場合は、@alecxeが提案したように、文字列から演算子関数への辞書マッピングを作成してください。
operator
代わりにモジュールを使用してください:
import operator
def get_truth(inp, relate, cut):
rel_ops = {
'>': operator.gt,
'<': operator.lt,
'>=': operator.ge,
'<=': operator.le,
'==': operator.eq,
'!=': operator.ne
}
return rel_ops[relate](inp, cut)