Можно ли строку (с числами и арифметическими операторами) посчитать без условий в Python

Пример того, что я хочу

string = input() # Ввожу + или - или / или *

print(10 string 10)

На выходе должен быть результат в виде ответа в зависимости от символа. 1.Почему бы не сделать через условия спросите вы? Представьте что я не знаю, сколько введет пользователь арифметических операторов и переменных с числами, но это надо посчитать согласно математике. Как это делает Python

2.Или через циклы это все сделать и назначить что, после чего должно выполняться сначала с (+, -) потом (*, /)?

Но зачем изобретать велосипед чтобы покататься, если его уже изобрели. Вы просто научите кататься)


Ответы (1 шт):

Автор решения: Zhihar

способ 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)

тут у операций одинаковый приоритет, но можно чуть дописать код и сделать * и / более приоритетными, правда тогда надо будет и рекурсивный вызов добавить

→ Ссылка