Вопрос задан 13.07.2023 в 05:29. Предмет Информатика. Спрашивает Чернов Ильгиз.

Помогите пожалуйста! Информатика! ПИТОН Строки Я очень туплюЗначение выраженияДана строка,

состоящая из n цифр (т.е. однозначных чисел), между которыми стоит n−1 знак операции, каждый из которых может быть либо +, либо −. Вычислите значение данного выражения.Входные данныеНа вход подается строка, состоящая из цифр, а также символов + и −.Выходные данныеВыведите ответ на задачу.ПримерыВвод1+2-3Вывод0
0 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-ом ))


0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для решения данной задачи, вам потребуется выполнить арифметические операции в строке. Для этого можно воспользоваться алгоритмом обратной польской записи (Reverse Polish Notation, RPN), также известным как обратная польская нотация или постфиксная запись.

Процедура решения:

  1. Преобразуйте входную строку в обратную польскую запись (постфиксную запись).
  2. Вычислите значение выражения, используя стек для хранения чисел и выполнения операций.

Пример для входной строки "1+2-3":

  1. Преобразуем ее в постфиксную запись: "1 2 + 3 -".
  2. Вычисляем значение:
    • Идем по каждому символу в строке:
      • Если символ - цифра, помещаем ее в стек.
      • Если символ - оператор (+ или -), достаем из стека два последних числа, выполняем операцию и результат помещаем обратно в стек.
    • После прохода по всем символам, останется единственное число в стеке, которое и будет являться ответом.

Python-код для решения задачи:

python
def 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.

0 0

Похожие вопросы

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

Последние заданные вопросы в категории Информатика

Задать вопрос