v0.2
Калькулятор (Python CLI)
Лёгкий интерактивный калькулятор на чистом Python — без внешних зависимостей.
Возможности
- Операции:
+ - * / //(целочисленное), скобки() - Приоритет операций (скобки меняют порядок)
- Унарный минус/плюс:
-5,+3 - Проценты:
50 %→0.5;7 % 3→1(бинарный остаток;%без правого операнда = процент) - Возведение в степень:
2 ** 10(правостороннее) - Экспоненциальная запись:
1e3,2.5E-4; разделители разрядов:1_000_000 - Константы:
pi,e,tau,inf(регистр не важен) - Функции:
sqrt,abs,exp,ln,log,log2,log10,round,floor,ceil,sin,cos,tan,asin,acos,atan(тригонометрия — в радианах) - Деление на ноль обрабатывается красиво (без падения с exception)
Структура
| Файл | Назначение |
|---|---|
calculator.py |
Парсер и вычислитель выражений |
cli.py |
Интераквная точка входа |
test_calculator.py |
Unit-тесты (pytest / unittest) |
README.md |
Это |
Запуск
Калькулятор работает на Python 3.10+ (без установки пакетов).
Интерактивный режим
python cli.py
После запуска вводите выражение, построчно:
$ python cli.py
Калькулятор. Введите выражение, 'выход'/'exit' — для завершения.
2 + 3 * (4 - 1) % 100
6
выход
Пока!
Пакетный режим (аргументы строки выражений)
python cli.py "2 + 2" "(2 + 3) * 4" "1 / 0" "2 ** 10"
4
20
Ошибка: Деление на ноль
1024
Выход из цикла
выход или exit (регистронезависимо, допускаются пробелы вокруг).
Тесты
# через pytest (рекомендуется)
python -m pytest test_calculator.py -v
# через stdlib unittest
python -m unittest test_calculator -v
Тесты покрывают:
- базовые операции и отрицательные числа;
- приоритет операций и скобки (в т.ч. вложенные);
- проценты;
- деление на ноль (raise + сообщение);
- синтаксические ошибки;
- правоассоциативность степени;
- команды выхода.