Python c нуля. Калькулятор. Рефакторинг

preview_player
Показать описание
В данном видео я расскажу, как с нуля написать калькулятор на языке программирования Python. Разберем с чего начать и куда двигаться.
Поговорим, что такое рефакторинг и как его делать.

Язык программирования Python с каждым днем становится все более популярным и поэтому я создал данный мини-курс, который позволит вам познакомиться с ним с нуля.

Тайм-коды:
00:00 Интро
00:08 Приветствие, "ссылки в описании" и т.д.
00:45 Зацикливаем небезопасные места, отлов исключений
04:24 Создаем функции
07:50 Вызываем функции
10:45 Выносим пункты меню в функции
14:55 Рефакторинг
16:20 Функция для ввода числа
21:27 "Выносим" повторяющиеся фрагменты
23:00 Рефакторинг "посложнее"
32:50 Будущие видео и прощание

#python #питон #vscode #нескучныйit #calculator #refactoring #рефакторинг #калькулятор
Рекомендации по теме
Комментарии
Автор

Не стоит везде пихать исключения, будет достаточно обычных if с проверкой строки на цифру, используя метод str.isdigit();
В python 3.10+ добавили аналог switch —match case, тоже советую ознакомиться.;
В функции print варианты можно было перечислить через запятую;
В документации можно перемещаться по выделенным участкам, нажимая на Tab;
В параметрах функции можно делать несколько возможных входных типов данных: get_exit(result: int | float)

kreynie
Автор

Я там в конце видео увлекся с рефакторингом и немного намудрил, так что удалять menu не стоит 😀

guavka_dev
Автор

Видео класс, но вопрос: Зачем усложнять? Весь этот калькулятор можно проще написать, да не так краство и менее читабельно, но всеже. Я понимаю что калькулятор в видео поможет закрепить все пройденые темы, но вопрос остался открыт.
while True:
print()
try:
Z = int(input())
if Z not in range(1, 7):
print("Error")
continue
elif Z == 6:
break
else:
O = float(input())
V = float(input())
except:
print("Error")
continue
else:
if Z == 1:
print(O + V)
elif Z == 2:
print(O - V)
elif Z == 3:
print(O * V)
elif Z == 4:
if V != 0:
print(O / V)
else:
print("Error")
continue
elif Z == 5:
print(O ** V)
else:
print("Error")
continue
W = input("y/n")
if W =="n":
break
elif W =="y":
continue
else:
print("Error")
break
P.S. мой говнокод еще не доделан, а имено принты надо дабавить и еще я не доделал последнию защиту от дурака когда вместа у или n написать другое, то программа должна вернуть к вопросу. И над названиями переменых тоже надо позаботится.

JumboZV
Автор

В конце получилось странно, версия с отдельными функциями под разные операторы при масштабировании это неплохо, хотя сейчас может и выглядит излишне из-за дублировании, но передача lambda это не интуитивно, какой-то странный декоратор получился (особенно с учетом наличия div_menu(), который не соответствует логике предыдущих операций), не лучше ли просто поместить арифметические операции просто в отдельный модуль или даже оставить в этом ради одинаковой стилизации, кроме того зачем называть метод, который всегда называют main, start, а после вместо вызова через if __name__ = "__main__" вызывать его просто в коде программы, из за этого исчезает 70% смысла в создании точки входа.

bin