
Помогите пожалуйста! Информатика! ПИТОН Строки Я очень туплюЗначение выраженияДана строка,
состоящая из n цифр (т.е. однозначных чисел), между которыми стоит n−1 знак операции, каждый из которых может быть либо +, либо −. Вычислите значение данного выражения.Входные данныеНа вход подается строка, состоящая из цифр, а также символов + и −.Выходные данныеВыведите ответ на задачу.ПримерыВвод1+2-3Вывод0

Ответы на вопрос

Ответ:
https://onlinegdb.com/S1IjQ7SUU --- Код на Python в песочнице
Если нужен сам код сразу - она ниже (про отступы не забудь, если будешь копировать прямо отсюда):
row = str(input("Enter your math expression: "))
a = []
res = 0
for i in range(len(row)):
a.append(row[i:i+1])
# print(a[i]) -- Если хочешь посмотреть на результаты
# посимвольного разделения строки
# (больше для себя комментарий делал)
for i in range(len(row)):
if (a[i] == "-"):
res = res - (int(a[i+1]))
elif (a[i] == "+"):
res = res + (int(a[i+1]))
elif (i == 0):
res = res + (int(a[i]))
print("Resul of your math expression: ",res)
Если что, результати с консоли вывода тоже прикрепил
Удачи там с Python-ом ))




Для решения данной задачи, вам потребуется выполнить арифметические операции в строке. Для этого можно воспользоваться алгоритмом обратной польской записи (Reverse Polish Notation, RPN), также известным как обратная польская нотация или постфиксная запись.
Процедура решения:
- Преобразуйте входную строку в обратную польскую запись (постфиксную запись).
- Вычислите значение выражения, используя стек для хранения чисел и выполнения операций.
Пример для входной строки "1+2-3":
- Преобразуем ее в постфиксную запись: "1 2 + 3 -".
- Вычисляем значение:
- Идем по каждому символу в строке:
- Если символ - цифра, помещаем ее в стек.
- Если символ - оператор (+ или -), достаем из стека два последних числа, выполняем операцию и результат помещаем обратно в стек.
- После прохода по всем символам, останется единственное число в стеке, которое и будет являться ответом.
- Идем по каждому символу в строке:
Python-код для решения задачи:
pythondef evaluate_expression(expression):
def is_operator(char):
return char == '+' or char == '-'
def apply_operator(operator, operand1, operand2):
if operator == '+':
return operand1 + operand2
elif operator == '-':
return operand1 - operand2
def precedence(operator):
return 1 if operator == '+' else 0
def evaluate_rpn(tokens):
stack = []
for token in tokens:
if token.isdigit():
stack.append(int(token))
else:
operand2 = stack.pop()
operand1 = stack.pop()
result = apply_operator(token, operand1, operand2)
stack.append(result)
return stack[0]
output = []
operator_stack = []
i = 0
while i < len(expression):
if expression[i].isdigit():
j = i
while j < len(expression) and expression[j].isdigit():
j += 1
output.append(expression[i:j])
i = j
elif is_operator(expression[i]):
while (operator_stack and is_operator(operator_stack[-1]) and
precedence(operator_stack[-1]) >= precedence(expression[i])):
output.append(operator_stack.pop())
operator_stack.append(expression[i])
i += 1
while operator_stack:
output.append(operator_stack.pop())
return evaluate_rpn(output)
# Пример использования:
input_string = "1+2-3"
result = evaluate_expression(input_string)
print(result) # Выведет 0
При использовании данного кода, в результате выполнения примера "1+2-3" будет выведено значение 0.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili