Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
3343476
Add function with addition
rereremin Sep 12, 2023
dcdfecf
Add function main
sofiyaga57 Sep 12, 2023
8a41430
Merge pull request #1 from sofiyaga57/HW2_Vinogradova
rereremin Sep 12, 2023
91d25e3
add divide function
1799mrd Sep 12, 2023
3256025
Merge branch 'HW2_Zherko' into HW2_Vinogradova
rereremin Sep 12, 2023
e918ebb
Merge pull request #2 from sofiyaga57/HW2_Vinogradova
rereremin Sep 12, 2023
9943785
Update calculator.py
rereremin Sep 12, 2023
86274ec
Merge branch 'main' into HW2_Mukhametshina
rereremin Sep 12, 2023
92b7fd2
Merge pull request #3 from 1799mrd/HW2_Mukhametshina
rereremin Sep 12, 2023
a5c3efa
divide
1799mrd Sep 12, 2023
043e2a8
Merge branch 'HW2_Zherko' into HW2_Mukha
rereremin Sep 12, 2023
13ca9e6
Merge pull request #4 from 1799mrd/HW2_Mukha
rereremin Sep 12, 2023
3dc6ce3
Add subtraction
Sep 12, 2023
c3907b0
Add substaction operation
Sep 12, 2023
65cb1ca
Merge branch 'HW2_Zherko' into HW2_Zherko
rereremin Sep 12, 2023
3ccd2c4
Merge pull request #5 from nerofeeva2001/HW2_Zherko
rereremin Sep 12, 2023
ad86b61
Merge pull request #6 from artyomtorr/HW2_Toropov
rereremin Sep 12, 2023
b4d30b9
Update add function
rereremin Sep 12, 2023
68a79e2
add subtraction operation
Sep 12, 2023
79ff40c
Add function multilply
Sep 13, 2023
5cf1f4e
Merge branch 'HW2_Zherko' into HW2_Toropov
rereremin Sep 12, 2023
40fefda
Update subtract function from wrong pull-request
rereremin Sep 13, 2023
9476bff
Merge branch 'HW2_Zherko' into HW2_Erofeeva
rereremin Sep 13, 2023
d56007b
Merge pull request #7 from nerofeeva2001/HW2_Erofeeva
rereremin Sep 13, 2023
9eafefe
Delete HW2_Erofeeva directory
rereremin Sep 13, 2023
948a705
Update README.md
rereremin Sep 13, 2023
f4e5421
Update README.md
rereremin Sep 13, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 16 additions & 49 deletions README.md

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Хорошая работа!
Если учесть небольшие исправления по мелочам, то вообще всё будет супер.

Оценка:
Функции: 1.6 * 5 = 8
Ветки и пулл-реквесты: 1 балл
README: 0.6
Доп. балл за фото: 1

Итог: 10.6

Original file line number Diff line number Diff line change
@@ -1,49 +1,16 @@
# HW2_Git_and_python
*This is the repo for the second homework of the BI Python 2023 course*

### Homework description
В качестве данного ДЗ вам будет необходимо познакомиться с командной работой через GitHub, а также освежить в памяти основые концепции языка Python, которые вы проходили во вступительном курсе. Прочтите внимательно все инструкции перед тем приступить к выполнению задания, при необоходимости задавайте вопросы в общем чате или личных сообщениях. Текст задания большой потому что подробный. Со временем подробностей в ДЗ будет меньше (хорошо ли это?).

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

В этом задании вам надо будет написать мини-программу `calculator.py`. Программа должна принимать на вход (через `input()`) строку с некоторым математическим выражением и печатать число - результат вычисления этого выражения. Гарантируется что выражение состоит из двух чисел (`int` или `float`) и математического оператора между ними (один из 4: `+ - * /`). Все указанные элементы разделены пробелами (пример: `5 - 3`). Реализуйте внутри скрипта 5 функций: `main` и 4 отдельные функции на каждый из типов математических операций. Функция `main` внутри себя должна принимать входное выражение, отдавать его на вычисление соответствующей функции, получать результат и печатать его на экран. Каждая из 4 функций лишь принимает определенное выражение от главной функции, вычисляет его и возвращает результат главной функции.

**Tехническое требование к заданию.**

Это задание будет выполняться в командах по 4-5 человек. Каждый из членов команды должен внести <ins>***как минимум***</ins> 1 функцию в скрипт `calculator.py`. Каждое внесение функции должно сопровождаться коммитом с осмысленным описанием коммита. Ниже приведена последовательность действий для успешного выполнения задания:

1. Посмотрите состав своей команды здесь ([**ССЫЛКА**](https://plausible-cannon-091.notion.site/Teams-for-HW2-429f378d25db4723a2979cd5434efc95?pvs=4)). Самостоятельно выбирете тимлида в вашей команде. Распределите кто какую из 5-и функций будет писать.
2. Тимлид должен сделать форк данного репозитория (убедитесь что вы убрали галочку в пункте **`Copy the** master **branch only`)**. Тимлид **создает новую ветку** `HW2_<surname>`. После этого тимлид отправляет каждому ссылку на форкнутый репозиторий.
3. Каждый член команды делает свой собственный форк с репозитория тимлида. После этого клонирует свой собственный форк к себе на локальный компьютер.
4. Локально в этом репозитории пишет в скрипте его часть работы. Скрипт `calculator.py` должен лежать в папке `HW2_<surname>` и может быть либо создан тимлидом в пункте 2 (тогда члены команды пишут код в имеющемся файле), либо же каждый член команды создает локально данный файл независимо от коллег. Это на выбор команды.
5. Каждый член команды после завершения своей части работы коммитит свои локальные изменения с ************************осмысленным************************ сообщением коммита и делает push в свой удаленный репозиторий. На этом этапе вам может потребоваться сделать синхронизацию с репозиторием тимлида, если там уже произошли изменения (это во вкладке *sync fork* → *fetch*, см. скриншот в [Notion](https://plausible-cannon-091.notion.site/Python-course-8b1f0f28506543bcba2a74c9b411a6cb))
6. После этого из персональных удаленных репозиториев делается *pull-request* в репозиторий тимлида **в ветку** `HW2_<surname>` чтобы собрать все куски кода воедино (это во вкладке *contribute* → *open pull request*, см. скриншот)
7. Тимлид (или любой другой член команды) дополняет общий репозиторий файлом `README.md` который содержит описание вашей мини-программы и состав команды разработчиков.
8. После завершения работы тимлид делает *pull-request* вашего командного репозитория обратно в репозиторий курса (в соответствующую ветку!) для проверки (также через *contribute*).

<ins>return</ins>: прикрепите ссылку на pull-request тимлида в Google Class (можете сделать от лица каждого члена команды, но это не обязательно).

#### Советы

- Задание не требует написания большого или сложного кода на python, но является достаточно сложным с точки зрения синхронизации членов команды. Лучший способ сделать его - это устроить командный созвон в Zoom / Discord / Google meet / … и всем вместе выполнить его. Вы можете делать демонстрацию экрана тимлида чтобы все поняли что происходит или экранов коллег которым нужна помощь.
- В работе с Git всегда что-то может пойти не так. Существует несколько способов отмены изменений, которые стоит освоить в ходе учебы в ИБ. Тем не менее, первое время нет ничего плохого в том чтобы просто удалить всё и начать заново!
- Задание может вызывать трудности в работе с Git. Пока еще только начало сентября и скорее всего нет завалов по другим делам - я советую потратить лишнее время и разобраться в пробелах.

#### Дополнительное задание

1. Прикрепите в `README.md` файле скриншот созвона вашей команды.

#### Разбалловка

- За каждую из 5 функций с осмысленным сообщением коммита и своим автором - **1.6 балла** (итого 1.6 * 5 = 8)
- За наличие полноценного README - **1 балл**
- За правильную структуру форков как описано выше - **1 балл**
- За доп. задание - **1 доп. балл**

Баллы начисляются всем членам команды одинаково.

#### Предполагаемый **учебный результат**

Это задание позволит получить реальный опыт работы с Git и GitHub в командных проектах. Далее этот навык окажется незаменимым. Также это задание позволит вам познакомиться с сокурсниками.

Удачи! ✨✨
**Состав команды разработчиков:**
1. Жерко Никита (тимлид)
2. Торопов Артем
3. Виноградова София
4. Ерофеева Наталья
5. Мухаметшина Регина

Нашей командой была разработана программа "Калькулятор", осуществляющая простейшие арифметические операции (сложение, вычитание, деление, умножение) с целыми и дробными числами.
Каждый член команды написал по одной функции:
1. Виноградова София - main()
2. Торопов Артем - multiply()
3. Мухаметшина Регина - divide()
4. Жерко Никита - add()
5. Ерофеева Наталья - subtract()

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Хотелось бы тут видеть примеры использования программы, что она получает на вход, что она выдаёт на выходе. Условному пользователю лучше сразу понимать, как с ней взаимодействовать.
В частности, в README указаны названия всех реализованных функций, но не написано, что их названия являются единственно рабочими операторами (а это не очевидно!)

Но хорошо, что указан состав команды, кто какую функцию реализовал. Фото 🔥

<img width="1440" alt="zoom" src="https://github.com/rereremin/HW2_Zherko/assets/114501294/1d44fb98-1f7f-4df7-90f6-3aed135a0d6a">
34 changes: 34 additions & 0 deletions calculator.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
def multiply(a, b):

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Возможно, стоит использовать более информативный нейминг переменных, например num_1, num_2. На оценку это не повлияет, разумеется, но в будущем стоит обратить внимание :)

return a * b

def divide(a, b):
return a / b

def add(a, b):
return a + b

def subtract(a, b):
return a - b

def main():
expression = input("Введите математическое выражение: ")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Юзабилити +++

number1, operator, number2 = expression.split()
Copy link

@pavlovanadia pavlovanadia Sep 18, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Хорошая распаковка и нейминг переменных!

number1 = float(number1)
number2 = float(number2)
result = None

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Хорошо задана переменная result

if operator == "+":
result = add(number1, number2)
elif operator == "-":
result = subtract(number1, number2)
elif operator == "*":
result = multiply(number1, number2)
elif operator == "/":
result = divide(number1, number2)
else:
print("Неверный оператор")
return
Comment on lines +28 to +29

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Здорово, что предусмотрено взаимодействие с пользователем в случае неверного оператора.
Не очень здорово, что return пустой, и функция будет возвращать None

print(f"Результат: {result:.2f}")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Лучше это сделать через return, иначе получается, что функция ничего не возвращает. print()-ом как раз мы хотим выводить на экран результат работы функции. Без return результат работы калькулятора невозможно будет использовать в дальнейшем коде.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
print(f"Результат: {result:.2f}")
return result

main()

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
main()
if __name__ == "__main__":
main()

Лучше использовать такую конструкцию (но это вас ещё ждёт впереди)