Python начальный уровень

Выполнен
Заказ
5429225
Раздел
Программирование
Предмет
Тип работы
Антиплагиат
Не указан
Срок сдачи
30 Мая 2023 в 23:55
Цена
250 ₽
Блокировка
10 дней
Размещен
17 Мая 2023 в 11:56
Просмотров
137
Описание работы
Преамбула

 

Выражения содержат только целые положительные числа, операторы и круглые скобки.

 

Допустимые операторы в выражении:

  • +: сложение
  • -: вычитание
  • *: умножение
  • /: деление
  • ^: возведение в степень

 

Операторы не имеют приоритетов, приоритеты задаются круглыми скобками. 

Таким образом, результатом выражения 1+((2+3)*(4*5)) будет 101, а выражения 2+((2*3)/(4^5)) будет 2.

 

Основное задание

 

Создайте и опишите класс Interpreter

  • конструктор класса должен принимать код в виде строки
  • метод evaluate единственный публичный метод, который доступен пользователю интерпретатора. Он должен вернуть результат выражения.

 

Как это должно работать

 

interpreter = Interpreter('1 + ((2 + 3) * (4 * 5))') print(interpreter.evaluate())

 

101

 

interpreter = Interpreter('10 + ((122 + 3) * (14 * 5))') print(interpreter.evaluate())

 

8760

 

Подсказки

 

Начните с выражений, в которых нет пробелов и используются только цифры от 0 до 9, то есть (2+3). Когда ваш интерпретатор будет работать, то добавьте возможность использования пробелов и чисел больше 9, то есть (2 + 123)

 

Для удобства вычисления, после приёма выражения, окружите его круглыми скобками. То есть выражение 2 * (3 + 4) превратить в (2 * 3 + 4)).

 

Для вычисления выражения вам надо создать два стека: для чисел и операторов. Продвигаясь по коду:

  • при нахождении числа добавляйте его в стек для чисел
  • при нахождении оператора добавляйте его в стек для операторов
  • при нахождении символа ):
  • извлеките последний оператор из стека операторов
  • извлеките два последних числа из стека чисел
  • произведите над числами соответствующую операцию
  • добавьте результат операции в стек для чисел
  • когда символы в коде закончатся, извлеките значение из стека чисел – это и будет результат всего выражения

 

Ваша программа не должна упасть из-за ошибок! В случае ошибок пользователь должен получить соответствующее сообщение, поэтому не забудьте проверить выражение на сбалансированность скобок.


к предыдущей теме к следующему разделу 

Нужна такая же работа?
  • Разместите заказ
  • Выберите исполнителя
  • Получите результат
Гарантия на работу1 год
Средний балл4.52
СтоимостьНазначаете сами
ЭкспертВыбираете сами
Уникальность работыот 70%
Время выполнения заказа:
3 дня 12 часов 5 минут
Выполнен в срок
Отзыв о выполненном заказе
Нужна аналогичная работа?
Оформи быстрый заказ и узнай стоимость
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Прямой эфир