-
Notifications
You must be signed in to change notification settings - Fork 55
HW2_Arnaut #4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
HW2_Arnaut #4
Changes from all commits
43f2467
cffb79a
e9dabbe
2be805b
9203bec
930ddad
1e8cd24
28a91e1
7792ec8
3d2615d
886c640
052f59d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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 нельзя!') | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Здорово, что об этом подумали, но это не оптимальное решение. Пока это не ошибка, мы еще поговорим позже, что правильно с этим делать, но как базовый принцип - в большинстве случаев стоит придерживаться однородности типа возвращаемых данных. Это не 100% правило, но база, если функция отдаёт число - она должна отдавать число, иногда может быть None - но не строка. |
||
|
|
||
| def main(): | ||
| expression = input() | ||
| elements = expression.split() | ||
| a = Decimal(elements[0]) | ||
| b = Decimal(elements[2]) | ||
|
Comment on lines
+22
to
+23
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. a, b - однобуквенные переменные, так лучше не делать. Тут бы хорошо подошло num1, num2 или что-то подобное на свой вкус. |
||
| 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 | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Внимательнее к тексту задания, тут это не принципиально, но мелочи бывают очень важны! |
||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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 человек. Каждый из членов команды должен внести <ins>***как минимум***</ins> 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_<surname>`. После этого тимлид отправляет каждому ссылку на форкнутый репозиторий. | ||
| 3. Каждый член команды делает свой собственный форк с репозитория тимлида. После этого клонирует свой собственный форк к себе на локальный компьютер. | ||
| 4. Локально в этом репозитории пишет в скрипте его часть работы. Скрипт `calculator.py` должен лежать в папке `HW2_<surname>` и может быть либо создан тимлидом в пункте 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_<surname>` чтобы собрать все куски кода воедино (это во вкладке *contribute* → *open pull request*, см. скриншот) | ||
| Example: | ||
|
|
||
|  | ||
| ``` | ||
| 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_<surname>`, содержать папку `HW2_<surname>` (со всем кодом) и идти из ветки `HW2_<surname> ` в `Python-BI-2025-26:main`. Проверьте что всё аналогично тому как на скриншоте! | ||
| 3. The corresponding function (`plus`, `minus`, `product`, or `divide`) is executed. | ||
|
|
||
|  | ||
|
|
||
| ### Советы | ||
|
|
||
| - Задание не требует написания большого или сложного кода на 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 в командных проектах. Далее этот навык окажется незаменимым. Также это задание позволит вам познакомиться с сокурсниками. | ||
|
|
||
| Удачи! ✨✨ | ||
|  |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Не забывайте про отступы!