Предмет: Информатика, автор: hasbula228

написать функцию которая принимает в себя строку которую вводит пользователь вида '12+5' или 5*4
и возвращает результат операции(НЕ ИСПОЛЬЗУЯ eval)

Ответы

Автор ответа: TemaZpro
0

Код на языке Python:

import re

def calculate_expression(expression):

   pattern = r'(\d+)(\D+)(\d+)'  # Регулярное выражение для разделения выражения на операнды и оператор

   matches = re.match(pattern, expression)

   if not matches:

       raise ValueError('Некорректное выражение')

   num1 = int(matches.group(1))

   operator_symbol = matches.group(2).strip()

   num2 = int(matches.group(3))

   if operator_symbol == '+':

       result = num1 + num2

   elif operator_symbol == '-':

       result = num1 - num2

   elif operator_symbol == '*':

       result = num1 * num2

   elif operator_symbol == '/':

       result = num1 / num2

   else:

       raise ValueError('Неподдерживаемая операция')

   return result

expression = input('Введите выражение: ')

result = calculate_expression(expression)

print('Результат:', result)

Объяснение:

Импортируем модуль re, который предоставляет функциональность работы с регулярными выражениями.

Задаем регулярное выражение pattern с помощью строки:

r'(\d+)(\D+)(\d+)'.

Это выражение разделяет выражение на три группы:

(\d+) - одно или более цифр (операнд);

(\D+) - один или более символов, не являющихся цифрами (оператор);

(\d+) - одно или более цифр (второй операнд).

Похожие вопросы
Предмет: Оʻzbek tili, автор: al1na2453554
Предмет: Математика, автор: fellsbecky