From fdba4e7dbbe0c4517c670f5ce08813535115d04d Mon Sep 17 00:00:00 2001 From: pi3c Date: Wed, 11 Oct 2023 23:44:24 +0300 Subject: [PATCH] lesson2 --- part1_basic/lesson2/README.md | 11 +++++ part1_basic/lesson2/calculator.py | 79 +++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 part1_basic/lesson2/README.md create mode 100644 part1_basic/lesson2/calculator.py diff --git a/part1_basic/lesson2/README.md b/part1_basic/lesson2/README.md new file mode 100644 index 0000000..37f20b6 --- /dev/null +++ b/part1_basic/lesson2/README.md @@ -0,0 +1,11 @@ +Дз 2. Знакомство с переменными и базовыми функциями +Создайте программу-калькулятор, которая будет выполнять простые математические операции: сложение, вычитание. Программа должна предложить пользователю выбрать операцию, затем ввести два числа и вывести результат операции. +Шаги: +Поприветствуйте пользователя и покажите список доступных операций: "+", "-" +Попросите пользователя выбрать операцию, введя соответствующий символ. +Затем попросите пользователя ввести первое число. +Затем попросите пользователя ввести второе число. +Выполните выбранную операцию над введенными числами. +Выведите результат пользователю. +Добавьте умножение. +Добавьте деление. diff --git a/part1_basic/lesson2/calculator.py b/part1_basic/lesson2/calculator.py new file mode 100644 index 0000000..487e725 --- /dev/null +++ b/part1_basic/lesson2/calculator.py @@ -0,0 +1,79 @@ +""" +Модуль является результатом выполнения практической +домашней работы по теме +"Знакомство с переменными и базовые функции" + +:copyright: Сергей Ванюшкин +:git: https://git.pi3c.ru/pi3cStudyRepo_Synergy/part1_basic/lesson1 +:license: MIT +2023г. +""" + +from decimal import Decimal, DecimalException, DivisionByZero + +MATH_SYMBOLS = ("+", "-", "*", "/") + + +def get_num_from_str(string: str) -> int | Decimal | None: + """Функция валидации и преобразования строки в число. + Проверяет коректность строки и определяет тип + для преобразования строки в числовой тип. + + Параметры: + - Число в строковом представлении + + Возвращаемые значения: + - num: int Вернет число типа int, если строка может быть + преобразована в целое число + - num: Decimal Если в строке есть точка или запятая + - None Если строку нельзя преобразовать в число + """ + + string = string.replace(",", ".") + try: + num = int(string) + return num + except ValueError: + pass + + try: + num = Decimal(string) + return num + except DecimalException: + pass + + return + + +print("Привет, Пользователь. Это простой калькулятор") +print("Вам доступны операции: ", *MATH_SYMBOLS) + +symbol = input("Введите операцию: ") + +while symbol not in MATH_SYMBOLS: + symbol = input("Ошибка, введите коректную операцию: ") + +while True: + num1 = get_num_from_str(input("Введите первое число:\n")) + if num1 is not None: + break + print("Ошибка ввода!\n") + +while True: + num2 = get_num_from_str(input("Введите второе число:\n")) + if num2 is not None: + break + print("Ошибка ввода!\n") + +match symbol: + case "+": + print("Сумма равна:", num1 + num2) + case "-": + print("Разница равна:", num1 - num2) + case "*": + print("Произведение равно:", num1 * num2) + case "/": + try: + print("Частное равно", num1 / num2) + except (DivisionByZero, ZeroDivisionError): + print("Are you crazy, dumbass?\nDivision by Zero, E_P_T")