Skip to content

HW2_Grobushkin#14

Open
PavelGrobushkin wants to merge 18 commits intoPython-BI-2025-26:mainfrom
PavelGrobushkin:HW2_Grobushkin
Open

HW2_Grobushkin#14
PavelGrobushkin wants to merge 18 commits intoPython-BI-2025-26:mainfrom
PavelGrobushkin:HW2_Grobushkin

Conversation

@PavelGrobushkin
Copy link

Create calculator.py

Enjoy!

Copy link

Choose a reason for hiding this comment

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

Привет! (´• ω •`)ノ
Отличная работа, команда! Комментарии к коду вы найдете ниже.

  • О README.md: здорово, что вы расписали назначение программы и список участников с выполненной работой. И вообще всё выглядит миленько и красиво ヽ(・∀・)ノ. Было бы здорово добавить сюда небольшие примеры с тем как работает ваша программа и способ как можно скачать ваш репозиторий с гитхаба и запустить калькулятор) (git clone, python calculator.py и т.д.)

  • О коммитах и структуре репозитория: молодцы, что написали названия коммитов с большой буквы, на английском языке, начиная с глагола. На что стоит обратить внимание:

  1. Коммит 'Add function main that reads the input and integrates arithmetic functions' слишком большой, намного больше рекомендованных 50 символов. Возможно стоит упростить название до 'Add main function'.
  2. Название коммитов, и в дальнейшем функций, можно было бы оставить в английском варианте. Например, Add substraction function и название функции аналогичное substraction, вместо функции minus. Аналогично со slo, umn и divide. Тут простой совет - не стоит усложнять названия)
  • О коде будет комментарий чуть ниже в виде построчного ревью.

Баллы: 10/10 (README) + 10/10 (Forks) + 80/80 (код и коммиты) + 10 доп. =
= 100/100 + 10 доп. = 110 баллов

В общем и целом вы проделали большую работу. Молодцы! (´。• ω •。`)
(тимлид, не забудь показать ревью всей команде)


def divide(x, y):
if y == 0:
return "Деление на ноль не допустимо"
Copy link

Choose a reason for hiding this comment

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

Обработка ошибки деления на ноль не требовалась, это избыточно. В базовом варианте программа бы упала на моменте деления на ноль, остановила выполнение и еще бы написала информацию об этом в стандартный поток ошибок. Не стоит избегать ошибок, они полезные) В данном случае это дополнительно некорректно реализовано, так как вы не делаете принт, а отдаете строчку в какую-то другую функцию main через return, и пользователь не видит ошибки.

elif operator == '*':
return umn(x,y)
elif operator == '/':
return divide(x,y)
Copy link

Choose a reason for hiding this comment

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

Самая большая проблема кода, что он не печатает вывод. Молодцы, что сделали return, но нужно было, чтобы программа печатала через print результат выполнения кода. Будьте внимательнее! (>_<)

Дополнительно можно было собрать все выводы в одну переменную result и с неё делать print и return.
Что-то такое:

    if operator == "+":
        result = slo(x, y)
    elif operator == "-":
        result = minus(x, y)
    elif operator == "*":
        result = umn(x, y)
    elif operator == "/":
        result = divide(x, y)
    print(result)
    return result

Comment on lines +22 to +29
if '.' in x:
x=float(x)
else:
x=int(x)
if '.' in y:
y=float(y)
else:
y=int(y)
Copy link

Choose a reason for hiding this comment

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

От вас не требовалась обработка десятичных чисел, но здорово, что вы добавили этот момент. Так держать! (ノ◕ヮ◕)ノ*:・゚
Вариант покороче: num1 = float(num1) if "." in a else int(num1)

Comment on lines +17 to +21
calc = input("Введите ваше выражение (например: 5 - 3): ")
parts = calc.split()
operator = parts[1]
x = parts[0]
y = parts[2]
Copy link

Choose a reason for hiding this comment

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

Можно вот так покороче сделать:
num1, operator, num2 = input().split()

@@ -0,0 +1,41 @@
def slo(x,y):
Copy link

Choose a reason for hiding this comment

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

Не стоит давать переменным однобуквенные обозначения (такие как x и y), это противоречит документации PEP8 и несет мало смысла. Можно обозначить переменные, например, как num1 и num2. В будущем вас познакомят с программами для автоматической проверки кода на документацию PEP8, такими как black и flake8. Они значительно облегчат вам жизнь!

return x / y

def main():
calc = input("Введите ваше выражение (например: 5 - 3): ")
Copy link

Choose a reason for hiding this comment

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

Описания команд по аналогии с ридми стоит писать на английском (например, заменить "Введите ваше выражение (например: 5 - 3): " на "Enter your expression (for example: 5 - 3): ")

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants