diff --git a/HW2_Arnaut/calculator.py b/HW2_Arnaut/calculator.py new file mode 100644 index 0000000..d09bab4 --- /dev/null +++ b/HW2_Arnaut/calculator.py @@ -0,0 +1,33 @@ + +from decimal import Decimal + +def minus(a, b): + return a - b + +def plus(a, b): + return a + b + +def product(a, b): + return a * b + +def divide(a, b): + if b!=0: + return(a / b) + else: + return('делить на 0 нельзя!') + +def main(): + expression = input() + elements = expression.split() + a = Decimal(elements[0]) + b = Decimal(elements[2]) + if elements[1] == '-': + result = minus(a, b) + elif elements[1] == '+': + result = plus(a, b) + elif elements[1] == '*': + result = product(a, b) + elif (elements[1] == '/'): + result = divide(a, b) + return result + diff --git a/README.md b/README.md index 4c29cbb..b5c404a 100644 --- a/README.md +++ b/README.md @@ -1,57 +1,54 @@ -# HW2_Git_and_python +HW2_Arnaut -В качестве данного ДЗ вам будет необходимо познакомиться с командной работой через GitHub, а также освежить в памяти основые концепции языка Python, которые вы проходили во вступительном курсе. Прочтите внимательно все инструкции перед тем приступить к выполнению задания, при необоходимости задавайте вопросы в общем чате или личных сообщениях. Текст задания большой потому что подробный. Со временем подробностей в ДЗ будет меньше (хорошо ли это?). +# Simple Decimal Calculator -## Основное задание +This project is a basic command-line calculator implemented in Python. +It uses the `Decimal` class from Python's built-in `decimal` module to ensure precise arithmetic operations and avoid floating-point inaccuracies. -В этом задании вам надо будет написать мини-программу `calculator.py`. Программа должна принимать на вход (через `input()`) строку с некоторым математическим выражением и печатать число - результат вычисления этого выражения. Гарантируется что выражение состоит из двух чисел (`int` или `float`) и математического оператора между ними (один из 4: `+ - * /`). Все указанные элементы разделены пробелами (пример: `5 - 3`). Реализуйте внутри скрипта 5 функций: `main` и 4 отдельные функции на каждый из типов математических операций. Функция `main` внутри себя должна принимать входное выражение, отдавать его на вычисление соответствующей функции, получать результат и печатать его на экран. Каждая из 4 функций лишь принимает определенное выражение от главной функции, вычисляет его и возвращает результат главной функции. +## Features -### Tехническое требование к заданию +* **Addition** (`+`) +* **Subtraction** (`-`) +* **Multiplication** (`*`) +* **Division** (`/`) with zero-division protection -Это задание будет выполняться в командах по 4-5 человек. Каждый из членов команды должен внести ***как минимум*** 1 функцию в скрипт `calculator.py`. Каждое внесение функции должно сопровождаться коммитом с осмысленным сообщением коммита. Ниже приведена последовательность действий для успешного выполнения задания: +## How It Works -1. Посмотрите состав своей команды здесь ([**ССЫЛКА**](https://plausible-cannon-091.notion.site/Teams-for-HW2-2659bcfdc5fa800d8945c3622c56fb40?source=copy_link)). Самостоятельно выбирете тимлида в вашей команде. Распределите кто какую из 5-и функций будет писать. -2. Тимлид должен сделать форк данного репозитория (убедитесь что вы убрали галочку в пункте **`Copy the** master **branch only`)**. Тимлид **создает новую ветку** `HW2_`. После этого тимлид отправляет каждому ссылку на форкнутый репозиторий. -3. Каждый член команды делает свой собственный форк с репозитория тимлида. После этого клонирует свой собственный форк к себе на локальный компьютер. -4. Локально в этом репозитории пишет в скрипте его часть работы. Скрипт `calculator.py` должен лежать в папке `HW2_` и может быть либо создан тимлидом в пункте 2 (тогда члены команды пишут код в имеющемся файле), либо же каждый член команды создает локально данный файл независимо от коллег. Это на выбор команды. -5. Каждый член команды после завершения своей части работы коммитит свои локальные изменения с **осмысленным** сообщением коммита и делает push в свой удаленный репозиторий. На этом этапе вам может потребоваться сделать синхронизацию с репозиторием тимлида, если там уже произошли изменения (это во вкладке *sync fork* → *fetch*, см. скриншот) +1. The program prompts the user to input an expression in the format: + ``` + number operator number + ``` -6. После этого из персональных удаленных репозиториев делается *pull-request* в репозиторий тимлида **в ветку** `HW2_` чтобы собрать все куски кода воедино (это во вкладке *contribute* → *open pull request*, см. скриншот) + Example: -![alt text](imgs/image_2_1.png) + ``` + 6 / 3 + ``` -7. Тимлид (или любой другой член команды) дополняет общий репозиторий файлом `README.md` который содержит описание вашей мини-программы и состав команды разработчиков. -8. После завершения работы тимлид делает *pull-request* вашего командного репозитория обратно в репозиторий курса (в соответствующую ветку!) для проверки (также через *contribute*). +2. The input is split into three elements: - -### Требования к PR ❗️❗️ + * First number (`a`) + * Operator (`+`, `-`, `*`, `/`) + * Second number (`b`) -Pull-request должен называться `HW2_`, содержать папку `HW2_` (со всем кодом) и идти из ветки `HW2_ ` в `Python-BI-2025-26:main`. Проверьте что всё аналогично тому как на скриншоте! +3. The corresponding function (`plus`, `minus`, `product`, or `divide`) is executed. -![alt text](imgs/image_2_2.png) - -### Советы - -- Задание не требует написания большого или сложного кода на python, но является достаточно сложным с точки зрения синхронизации членов команды. Лучший способ сделать его - это устроить командный созвон в Zoom / Discord / Google meet / … и всем вместе выполнить его. Вы можете делать демонстрацию экрана тимлида чтобы все поняли что происходит или экранов коллег которым нужна помощь. -- В работе с Git всегда что-то может пойти не так. Существует несколько способов отмены изменений, которые стоит освоить в ходе учебы в ИБ (см. презентацию по git). Тем не менее, первое время нет ничего плохого в том чтобы просто удалить всё и начать заново! -- Задание может вызывать трудности в работе с Git. Пока еще только начало сентября и скорее всего нет завалов по другим делам - я советую потратить лишнее время и разобраться в пробелах. - -## Дополнительное задание +4. The result is returned as a `Decimal` object. -1. Прикрепите в `README.md` файле скриншот созвона вашей команды. +## Example Usage -## Разбалловка +``` +Input: 6 / 3 +Output: Decimal('2') +``` -- За каждую из 5 функций с осмысленным сообщением коммита и своим автором - **16 баллов** (итого 16 * 5 = 80) -- За наличие полноценного README - **10 баллов** -- За правильную структуру форков как описано выше - **10 баллов** -- За доп. задание - **10 доп. баллов** +## Authors -Баллы начисляются всем членам команды одинаково. +* Oleg Arnaut - teamlead, added main function +* Alevtina Pinova - added minus function +* Elina Iskhakova - added plus function and wrote README file +* Elena Parshina - added product function +* Arseniy Gubler - added divide function -### Учебный результат - -Это задание позволит получить реальный опыт работы с Git и GitHub в командных проектах. Далее этот навык окажется незаменимым. Также это задание позволит вам познакомиться с сокурсниками. - -Удачи! ✨✨ +![alt text](imgs/image_2_2.png) diff --git a/imgs/image_2_2.png b/imgs/image_2_2.png index ecee3e0..e3fd596 100644 Binary files a/imgs/image_2_2.png and b/imgs/image_2_2.png differ