Можно ли присвоить пeременной в python значение оператора действия (например: ”+”, ”-” и т. д.)
Хочу использовать введенный в консоль знак действия напрямую через присваивание переменной его значения, а не через цикл if.
Ответы (3 шт):
Автор решения: artemgh
→ Ссылка
Если, я правильно Вас понял, то Вы можете использовать оператор eval()
Пример:
command = 'print("test")'
eval(command)
Важно: это очень небезопасный оператор, в рабочих проектах!
Автор решения: Stanislav Volodarskiy
→ Ссылка
Можно хранить карту, которая отображает строки с операторами в процедуры. Тогда можно обойтись без простыни из условных операторов:
ops = {
'+': lambda a, b: a + b,
'-': lambda a, b: a - b,
'*': lambda a, b: a * b,
'/': lambda a, b: a / b,
}
while True:
s = input('> ')
op = ops[s]
print(2, s, 3, '=', op(2, 3))
$ python ops.py > + 2 + 3 = 5 > - 2 - 3 = -1 > * 2 * 3 = 6 > / 2 / 3 = 0.6666666666666666
Автор решения: CrazyElf
→ Ссылка
Есть ещё такая библиотека operator, там есть все основные операторы в виде готовых функций, их можно использовать так, например:
from operator import add,sub,mul,truediv
str2op = {
'+': add,
'-': sub,
'*': mul,
'/': truediv,
}
op_str = input()
op = str2op[op_str]
x, y = map(int, input().split())
print(op(x, y))
Пример ввода-вывода:
/
1 2
0.5