Курси програмування для дітей безкоштовно

20. Модульний код у Python або вчимося робити рефакторинг

Модульний код у Python | Python для дітей | ITisFuture

Модульний код у Python дозволить вам вивести програми на новий рівень. Це один з перших кроків на шляху до ідеального коду: рефакторингу. А покращень ніколи не буде замало!

Правила у програмуванні

Дотримуватися правил — це не про “нудну дисципліну”, а про розумний стиль програмування. Коли ваш код охайний, зрозумілий і логічний — ви ніби створюєте власний маленький світ, де все продумано й працює чітко, як задумано. В цьому світі легко розібратися, тому і вам і іншим буде легше додавати туди нові фічі та можливості, а значить розвивати його і робити кращим. У гарно написаному коді важче сховатися багам, а процес розробки легкий і приємний.
Такий код легше покращувати, показувати іншим і навіть пишатися ним 🦸‍♀️
Адже справжні програмісти не просто “щоб працювало”, а роблять красиво і з розумом.
Це як у грі: можна пройти рівень якось, а можна — з комбо, бонусом і стилем! 🎮🔥

Програмісти навіть мають свою філософію про те, як писати красивий і зрозумілий код. Є кількасот книг на 400+ сторінок на тему “Патернів програмування”, де пояснюється, як правильно спроєктувати новесенький проєкт так, щоб коли він розростеться до величезного монстрика, його все одно було зручно редагувати й дописувати.

Рекомендую пізніше прочитати цю книгу. А поки розберемося зі спрощеними правилами:

Патерни програмування Модульний код у Python | Python для дітей | ITisFuture

🎯 1. Не повторюйте код (DRY — Don’t Repeat Yourself)

💡Ідея: Якщо пишете одне й те саме кілька разів — зробіть функцію або цикл!
🧠 Чому: Менше коду, менше шансів помилитися, легше змінювати.

Погано:

print("🧙 Маг атакує вогнем! -20 HP")
print("🧙 Маг атакує вогнем! -20 HP")
print("🧙 Маг атакує вогнем! -20 HP")

Добре:

def fire_attack():
    print("🧙 Маг атакує вогнем! -20 HP")

for i in range(3):
    fire_attack()

💬 2. Давайте змінним і функціям зрозумілі імена

💡Ідея: Ім’я має підказувати, що робить код.
🧠 Чому: Програму має бути легко зрозуміти навіть через тиждень.

Погано:

def f(x):
    print(x * 10)

Добре:

def add_score(points):
    print("🏆 Твій рахунок:", points * 10)

⚙️ 3. Розбивайте код на частини (функції чи файли)

💡Ідея: Код — це як гра з рівнями: кожен рівень (функція) має свою задачу.
🧠 Чому: Легше тестувати, лагодити й розвивати програму.

Погано:

print("🚶‍♂️ Гравець рухається вперед")
print("⚔️ Гравець атакує монстра -20 HP")
print("🧟 Монстр атакує у відповідь -10 HP")
print("🎉 Перемога! Гравець отримує 50 XP")

Добре:

def move_player():
    print("🚶‍♂️ Гравець рухається вперед")

def attack_enemy():
    print("⚔️ Гравець атакує монстра -20 HP")

def enemy_attack():
    print("🧟 Монстр атакує у відповідь -10 HP")

def win_game():
    print("🎉 Перемога! Гравець отримує 50 XP")

# 🎮 Основний сценарій гри:
move_player()
attack_enemy()
enemy_attack()
win_game()

🧩 4. Коментуйте свій код (але з розумом)

💡Ідея: Коментар — це як підказка в грі 🗺️
🧠 Чому: Він допомагає іншим (і вам майбутньому!) зрозуміти, що відбувається у програмі.

Порада: Не коментуйте очевидне, але пояснюйте навіщо щось зроблено, якщо це не очевидно.Коментарі — як нотатки в грі: не пишеш усе підряд, лише те, що допоможе виграти. 😉

Поганий код. Меми про ІТ та програмування для дітей Модульний код у Python | Python для дітей | ITisFuture

Погано:

hp = 100
hp -= 25
print(hp)

Добре:

hp = 100  # 💚 Початкове здоров’я гравця
hp -= 25  # 😵 Отримано шкоду від ворога
print(hp)  # 🔢 Показуємо залишок HP

🎮 5. Краще створити одну функцію з параметрами аніж кілька схожих

💡 Ідея: У грі ваш герой може атакувати по-різному — мечем, магією або луком.
Замість трьох окремих функцій для кожного виду атаки — зробимо одну, але з параметром типу атаки 💥

“Стратегія” — це як вибрати, яким способом атакувати. Ви не створюєте три різні функції – просто змінюєте параметр, і герой поводиться по-іншому.
🧠Чому: Можна розширити:Додати нові стилі — наприклад, "laser", "kick", "summon_dragon" — без зміни решти коду!

Поганий код. Меми про ІТ та програмування для дітей Модульний код у Python | Python для дітей | ITisFuture

Погано:

def attack_with_sword():
    print("🗡️ Герой б’є мечем! -15 HP ворогу")

def attack_with_magic():
    print("✨ Герой кидає вогняну кулю! -20 HP ворогу")

def attack_with_bow():
    print("🏹 Герой стріляє з лука! -10 HP ворогу")

# Використання:
attack_with_sword()
attack_with_magic()
attack_with_bow()

Добре:

def attack(style):
    if style == "sword":
        print("🗡️ Герой б’є мечем! -15 HP ворогу")
    elif style == "magic":
        print("✨ Герой кидає вогняну кулю! -20 HP ворогу")
    elif style == "bow":
        print("🏹 Герой стріляє з лука! -10 HP ворогу")
    else:
        print("🤷 Невідомий стиль атаки!")

# Використання:
attack("sword")
attack("magic")
attack("bow")

Практика. Модульний код у Python

Готуємо середовище

Сьогодні ми попрактикуємося на програмці, яка перетворює текст у звук. Ми застосуємо до програми правила написання гарного коду і трохи покращимо програмку.

0: Налаштуємо python. У VS Code перейдіть у меню View → Terminal (або Ctrl + ~). У терміналі напишіть:

python --version


або

python3 --version

Якщо хоч одна з команд запрацювала і видала версію – python є в системі. Якщо видає помилку, або тільки слово Python без версії : його треба завантажити та перевстановити з сайту python.org/downloads. Під час інсталяції обов’язково відмітити «Add Python to PATH». Після перевстановлення закрийте і відкрийте знову VS Code і повторіть команду з перевіркою версії

Далі перевіримо, чи встановлено пакетний менеджер pip. Він дозволяє ставити потрібні пакети й бібліотеки, щоб писати на python складніші й різноманітніші програми. В терміналі пишемо:

pip --version


або

python -m pip --version

Якщо показує версію, pip вже встановлений. Якщо ні, встановимо(це встановить pip або оновить його до останньої версії):

python -m ensurepip --upgrade

Можете ще раз запустити команду перевірки (стрілки вгору вниз можуть видавати попередні команди). Працює! Ідемо далі

1: Встановлюємо потрібну бібліотеку. У VS Code перейдіть у меню View → Terminal (або Ctrl + ~). У терміналі напишіть:

pip install gTTS pygame

2: Додамо потрібні розширення до VSCode, щоб він краще розумів Python і підказував нам, якщо ми пишемо щось не так. Зліва знаходимо меню Extentions (Розширення), це ось такі квадратики:

VSC як конструктор, що туди поставиш, з тим він і вмітиме працювати. Нам треба буде розширення Python Extension Pack та Code Runner. В пошуку пропишіть перший, натисніть Install. Повторіть те саме з другим. Друге розширення додасть зручну кнопочку для запуску програм.

Рефакторинг коду

3: А ось і код для рефакторингу і моделювання:

from gtts import gTTS
from pygame import *
import os
import time

tts = gTTS("Привіт, як твої справи?", lang="uk")
tts.save("voice.mp3")


mixer.init()
mixer.music.load("voice.mp3")
mixer.music.play()


while mixer.music.get_busy():
    time.sleep(0.5)

mixer.music.unload()
mixer.quit()
os.remove("voice.mp3")
Поганий код. Меми про ІТ та програмування для дітей Модульний код у Python | Python для дітей | ITisFuture

Скопіюйте його собі й запустіть. Код має озвучити речення, яке є у програмі

4: Перше, що зробимо з незнайомим кодом – розбираємо рядок за рядком і коментуємо все, що не зрозуміло. Це допоможе далі швидше орієнтуватися в коді. Нижче наведені коментарі, але їх порядок перемішаний. Додайте коментар перед кожним рядком, який не зрозумілий (не обов’язково коментувати все, тільки ті рядки, по якім треба підказки)

# Ініціалізуємо мікшер pygame для роботи зі звуком
# Цикл чекає, поки музика відтворюється
# Пауза на 0.5 секунди, щоб цикл не перевантажував процесор
# Імпортуємо клас gTTS з бібліотеки gtts для перетворення тексту в мову
# Видаляємо тимчасовий mp3 файл з диску
# Завантажуємо наш mp3 файл у мікшер
# Відтворюємо звук
# Створюємо об’єкт gTTS з текстом "Привіт, як твої справи?" та мовою українська
# Імпортуємо модуль time для пауз під час відтворення аудіо
# Зберігаємо згенеровану мову у файл "voice.mp3"
# Завершуємо роботу мікшера pygame
# Розвантажуємо поточний звуковий файл з пам’яті
# Імпортуємо модуль os для роботи з файлами (видалення файлів)
# Імпортуємо все з модуля pygame для роботи зі звуком
Поганий код. Меми про ІТ та програмування для дітей Модульний код у Python | Python для дітей | ITisFuture

5: Подумайте як зробити наступні зміни у програмі (робити їх поки не треба, але варто уявити собі план змін в поточній програмі без рефакторингу):

  1. Програма має попросити користувача ввести з консолі кілька фраз і озвучити кожну з них.
  2. Програма має працювати з кількома мовами, наприклад англійською й українською.
  3. Програма має зачитувати список фраз

Великі треба зміни й багато нового коду, егеж? А якщо ми відрефакторимо програму спочатку?

6: Створімо функції. Зверніть увагу на нове оформлення функцій і параметрів, на коментарі. Замість іншопланетян 👽👽👽 вставте частину коду з початкової програми, яку варто помістити у функції.


def text_to_speech(phrase: str, lang: str = "uk") -> str:
    """
    Функція озвучує переданий текст і зберігає його у mp3 файл з унікальною назвою.
    
    Параметри:
    phrase (str) : Текст, який потрібно озвучити
    lang (str)   : Мова озвучення (за замовчуванням українська "uk")
    
    Повертає:
    str : назва збереженого mp3 файлу
    """
    # Додаємо випадкове число до назви файлу для унікальності
    filename = f"voice_{random.randint(1000, 9999)}.mp3"
    
    👽👽👽
    
    return filename

7: Те саме для другої функції. Тут в код додали try-catch. Пригадайте навіщо він використовується ? Навіщо його додано у цю функцію ?


def delete_file(filename: str) -> bool:
    """
    Функція видаляє файл з диску.
    
    Параметри:
    filename (str) : Назва файлу для видалення
    
    Повертає:
    bool : True, якщо файл видалено успішно, False, якщо сталася помилка
    """
    try:
        👽👽👽
        return True
    except Exception as e:
        print(f"Помилка при видаленні файлу: {e}")
        return False

8: Тепер внизу допишемо код основної програми. Перевірте, що функції запрацювали:

file: str = text_to_speech("Привіт, як твої справи?", "uk")
success: bool = delete_file(file)
print("Файл видалено:", success)

9: За допомогою input попросіть користувача обрати мову і ввести фразу для перекладу. Програма має озвучити фразу обраною мовою. Приклад роботи:

Вибери мову: 1- українська, 2- англійська, 3-іспанська: 2
Введи фразу для озвучки: To be or not to be
Файл видалено: True

10: Створіть цикл в якому користувачу кілька разів пропонується обрати мову і ввести фразу. Додайте можливість виходу з циклу (наприклад користувач має ввести відповідне слово чи цифру)

Уроки програмування для дітей. Домашня робота

Домашня робота

1: За допомогою pip встановіть бібліотеки для кольорового тексту:

pip install colorama rich

2: Відрефакторіть подану програму:

  1. додайте коментарі
  2. додайте функцію друку таблички в параметри передайте кольори.
  3. викличте функції й перевірте, що програма працює.

from colorama import init, Fore, Back, Style
from rich.console import Console
from rich.table import Table

init(autoreset=True)

print(Fore.RED + “Цей текст червоний”)
print(Back.YELLOW + “Тло жовте”)

console = Console()

table = Table(title=”Таблиця оцінок”)

table.add_column(“Ім’я”, justify=”left”, style=”cyan”, no_wrap=True)
table.add_column(“Математика”, justify=”center”, style=”magenta”)
table.add_column(“Фізика”, justify=”center”, style=”green”)

table.add_row(“Аня”, “12”, “14”)
table.add_row(“Богдан”, “15”, “16”)
table.add_row(“Катя”, “14”, “15”)

console.print(table)

Поганий код. Меми про ІТ та програмування для дітей | Python для дітей | ITisFuture

3: Додайте у ваш код функцію colored_text. Додайте ще 2-3 кольори до неї. Схожим чином створіть функцію print_colored_background. Викличте функції в основній програмі:

  • виведіть відому крилату фразу за допомогою colored_text
  • виведіть ім’я першої вчительки за допомогою print_colored_background
  • виведіть побажання за допомогою colored_text
  • виведіть улюблене слово іноземною мовою за допомогою print_colored_background
def colored_text(text: str, color: str = "RED") -> str:
    """
    Повертає текст у заданому кольорі.
    
    Параметри:
    text : str - Текст для виводу
    color : str - Колір тексту (RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE)
    
    Повертає:
    str - Текст з кольором
    """
    color_dict = {
        "RED": Fore.RED,
        "GREEN": Fore.GREEN,
    }
    return color_dict.get(color.upper(), Fore.WHITE) + text

Уроки програмування для дітей ускладнені завдання level up

Level Up!
Модульний код у Python

1: Відрефакторіть ще програму з домашки:
А) створіть словник колонок таблиці (ім’я і 3-4 предмети):
columns = { “Ім’я”: “cyan”,… }
Створіть функцію, яка малюватиме колонки за даними з цього списку.

2: Створіть список студентів і оцінок:
[(“Аня”, 12, 14),…]
Створіть функцію, яка заповнюватиме таблицю даними з цього списку. Якщо для якоїсь колонки немає оцінки вона має залишитися пустою

Модульний код у Python | Python для дітей | ITisFuture

Не зупиняйтесь у вивченні Python! До зустрічі на наступних уроках!

Залишити коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

starzbet   jojobet   jojobet   meritking   starzbet   starzbet   mariobet   mariobet   mariobet   meritking   meritking   meritking   grandpashabet   meritking   meritkin   meritking   grandpashabet   meritking   grandpashabet   grandpashabet   grandpashabet   grandpashabet   grandpashabet   grandpashabet   grandpashabet   grandpashabet   grandpashabet   grandpashabet   grandpashabet   grandpashabet   grandpashabet   grandpashabet   grandpashabet