Можно ли строку (с числами и арифметическими операторами) посчитать без условий в Python
Пример того, что я хочу
string = input() # Ввожу + или - или / или *
print(10 string 10)
На выходе должен быть результат в виде ответа в зависимости от символа. 1.Почему бы не сделать через условия спросите вы? Представьте что я не знаю, сколько введет пользователь арифметических операторов и переменных с числами, но это надо посчитать согласно математике. Как это делает Python
2.Или через циклы это все сделать и назначить что, после чего должно выполняться сначала с (+, -) потом (*, /)?
Но зачем изобретать велосипед чтобы покататься, если его уже изобрели. Вы просто научите кататься)
Ответы (1 шт):
способ 1 (для сильных духом):
text = input("введите выражение:");
print(f"{text} = {eval(text)}")
Если же вы хотите делать самостоятельно но это надо посчитать согласно математике, то надо много чего учитывать - скобки к примеру и т.д.
Но считаем, что доступны только арифметические операции и все, тогда надо всего лишь учитывать приоритет операций :)
Если и это не учитывать, то код будет таким:
text = input("введите выражение:");
res = 0
action = '+'
actions = {
'+': lambda a, b: a + b,
'-': lambda a, b: a - b,
'*': lambda a, b: a * b,
'/': lambda a, b: a / b,
}
for obj in text.split():
if obj in '+-*/':
action = obj
else:
res = actions[action](res, int(obj))
print(res)
тут у операций одинаковый приоритет, но можно чуть дописать код и сделать * и / более приоритетными, правда тогда надо будет и рекурсивный вызов добавить