Калькулятор для подсчета выражений в обратной польской записи
Описание: Данная программа позволяет подсчитывать математичские выражения, записанные в обратной польской записи. В программе педусмотрена проверка скобок, поддержка базовых арифметических операций, унарных операций, также она обрабатывает ошибки.
Основные функции прораммы:
-
Функция zeloe(a) - проверка целого числа Назначение: Проверяет, является ли переданная строка целым числом
Возвращает: True если число целое, False в противном случае
-
Функция skob(s) - проверка правильности расстановки скобок Назначение: Проверяет корректность расстановки круглых скобок в выражении
Алгоритм: Использует стек для отслеживания открывающих скобок
Возвращает: True если скобки расставлены правильно, False если есть ошибки
-
Функция del_skob(s) - удаление скобок Назначение: Удаляет все скобки из выражения, если они расставлены правильно
Принцип работы: Заменяет скобки на пробелы
Возвращает: Строку без скобок или None если скобки расставлены неправильно
-
Функция chislo(s) - проверка возможности преобразования в число Назначение: Проверяет, можно ли строку преобразовать в число
Возвращает: True если преобразование возможно, False в противном случае
-
Функция obr_polsk(s) - основной вычислительный модуль Назначение: Вычисляет выражение в обратной польской записи
Алгоритм: Использует стек для хранения промежуточных результатов
-
Функция code() - основной цикл программы Назначение: Чтение и обработка входных данных
Обработка ошибок:
ZeroDivisionError - деление на ноль
ValueError - некорректные значения
SyntaxError - синтаксические ошибки
IndexError - ошибки в структуре выражения
Установка и запуск: Требования 1.Python 3.10 или выше, что бы была поддержка mathc-case 2.Установленные пакеты: pytest
Шаги вычисления:
8 → стек: [8]
2 → стек: [8, 2]
5 → стек: [8, 2, 5]
- → 2 * 5 = 10 → стек: [8, 10]
- → 8 + 10 = 18 → стек: [18]
1 → стек: [18, 1]
3 → стек: [18, 1, 3]
2 → стек: [18, 1, 3, 2]
- → 3 * 2 = 6 → стек: [18, 1, 6]
- → 1 + 6 = 7 → стек: [18, 7]
4 → стек: [18, 7, 4]
- → 7 - 4 = 3 → стек: [18, 3]
/ → 18 / 3 = 6 → стек: [6]
Ответ:6
Примеры выражений 3 3 + -> 6.0 -> 3 + 3
7 3 - -> 4.0 -> 7 - 3
4 4 * -> 16.0 -> 4 × 4
10 5 / -> 2.0 -> 10 ÷ 5
1 3 ** -> 1.0 -> 1³
7 3 // -> 2.0 -> 7 ÷ 3 (целочисленно)
7 3 % -> 1.0 -> 7 mod 3
15 ~ -> -15.0 -> Унарный минус
17 $ -> 17.0 -> Унарный плюс
Операции: Бинарные операции + - сложение - - вычитание * - умножение / - деление // - целочисленное деление % - остаток от деления ** - возведение в степень Унарные операции ~ - унарный минус (изменение знака) $ - унарный плюс (сохранение знака)
Требования: Целочисленные операции (// и %):
Оба операнда должны быть целыми числами
Деление на ноль запрещено
Деление (/):
Деление на ноль запрещено
Структура проекта: main.py - Основной файл программы calculator_tests.py - Тесты (если есть) README.md - Документация constants.py - Константы, использованные в программе
Тестирование:
Ограничения: Скобки должны быть оформлены с пробелами Поддерживаются только числа с плавающей точкой Максимальная точность определяется float Выражения должны быть разделены пробелами
Допущения: При целочисленном делении и взятии остатка от числа, числа должны быть целыми, но могут быть с плавающей точкой (например, 5.0 1.0 //) Пробел между скобкой и числом или операцией необязателен
Разработка:
Программа написана с использованием:
Модуля sys
Обработкa исключений с помощью try и except
Стековая машина для вычисления выражений в обратной польской записи