Модуль 20

Автоматизація задач за допомогою скриптів

Ось готовий урок, створений за твоїм майстер-промптом. Це CS50-стайл: енергійно, з прикладами та фокусом на розумінні суті.


🎓 УРОК: Автоматизація задач за допомогою скриптів

Привіт, світ! 👋 Я радий бачити вас тут.

Сьогодні ми поговоримо про суперсилу. Серйозно. Уявіть, що у вас є можливість клонувати себе, щоб цей клон робив усю нудну роботу, поки ви п’єте каву. Звучить непогано? Це і є скриптинг.


1. 🔥 Вступ: Чому ми взагалі про це говоримо?

Уявіть ситуацію. Ви працюєте маркетологом, бухгалтером або просто організовуєте сімейний фотоархів. У вас є папка, в якій лежить 5 000 фотографій із назвами типу DSC_00192.jpg. А вам треба перейменувати їх усі на Відпустка_2023_001.jpg і так далі.

Питання до вас: Як ви будете це робити? 1. Клік правою кнопкою -> "Перейменувати" -> Ввести назву. І так 5000 разів? 2. Наймете стажера (якщо він є)? 3. Чи напишете 5 рядків коду, натиснете Enter і підете дивитися серіал?

Якщо ви вибрали варіант №1, то через 2 години ви зненавидите комп’ютер. Якщо №3 — ви зрозуміли суть нашого уроку.

Аналогія: Уявіть, що ви на кухні. * Ручна робота — це коли ви миєте кожну тарілку окремо губкою. * Скрипт — це посудомийна машина. Ви один раз завантажуєте правила (тарілки сюди, миючий засіб сюди) — і машина робить брудну роботу за вас.

Без скриптів ви — раб свого комп’ютера. Зі скриптами — ви його командир. Поїхали розбиратися!


2. 🧠 Теоретична база: Що там "під капотом"?

Давайте відкинемо складні терміни. Що таке скрипт?

Скрипт — це невелика програма (сценарій), написана для виконання конкретної, часто рутинної задачі.

На відміну від великих програм (як Photoshop чи Excel), скрипти зазвичай: 1. Короткі (часто це один файл). 2. Інтерпретуються (виконуються рядок за рядком спеціальною програмою-інтерпретатором, наприклад, Python або Bash). 3. Використовують готові інструменти (бібліотеки).

Як це працює? (Логіка, а не магія)

Уявіть скрипт як рецепт для кухаря-робота: 1. Input (Вхід): Взяти список файлів у папці. 2. Process (Обробка - Цикл): Для кожного файлу: * Прочитати стару назву. * Створити нову назву. * Дати команду операційній системі: "Зміни назву!". 3. Output (Вихід): Повідомити: "Готово, шеф!".

🔑 Що треба запам'ятати залізно: * Комп'ютер тупий. Він робить рівно те, що ви сказали. Якщо ви скажете видалити все — він видалить все. * Цикл (Loop) — це серце автоматизації. Це механізм "зроби це для кожного елемента".

💡 Що можна поки зрозуміти інтуїтивно: Вам не треба писати код для доступу до жорсткого диска з нуля. Розумні люди вже написали бібліотеки (набори інструментів). Ваша задача — просто взяти з полиці потрібний інструмент (наприклад, бібліотеку os у Python) і використати його.


3. 🧪 Приклади: Від "Hello" до реальної магії

Ми будемо використовувати мову Python, бо вона читається як англійська і ідеальна для автоматизації.

Приклад 1: Найпростіший робот

Уявіть, що вас покарали в школі й змусили писати на дошці 100 разів "Я не буду запізнюватися".

Що ми очікуємо? Код, який не змушує нас писати це 100 разів вручну.

# range(100) створює послідовність від 0 до 99
for i in range(100):
    print(f"{i + 1}. Я не буду запізнюватися")

Чому так? Ми використали цикл for. Комп'ютер "біжить" по колу 100 разів і щоразу виконує команду print.


Приклад 2: Реальна задача (Сортування файлів)

У вас на робочому столі безлад: куча файлів .txt, .jpg, .pdf. Давайте розкладемо їх по папках.

Питання: Як комп'ютер дізнається, що куди класти? Відповідь: Ми перевіримо розширення файлу (те, що після крапки).

import os
import shutil

# Уявімо, що це наша папка зі сміттям
folder = "./downloads"

# Отримуємо список усіх файлів
files = os.listdir(folder)

for file_name in files:
    # Перевіряємо, чи це текстовий файл
    if file_name.endswith(".txt"):
        # Створюємо команду: перемістити файл у папку "Docs"
        # shutil.move(звідки, куди)
        print(f"Переміщую {file_name} у папку Документи...")
        # shutil.move(os.path.join(folder, file_name), "./docs") 

(Примітка: реальна команда move закоментована, щоб ви випадково не запустили це без підготовки, але логіка саме така!)

Аналіз: 1. import os — ми взяли "ящик з інструментами" для роботи з системою. 2. os.listdir — це як відкрити папку і подивитися очима. 3. if ... endswith — це наш фільтр.


4. 🛠 Практична частина

Час бруднити руки! Відкрийте редактор коду (або уявіть його).

🔹 Завдання 1: Розігрів Напишіть скрипт, який виводить фразу "Автоматизація — це круто!" 5 разів.

🔹 Завдання 2: Зміна умов Змініть скрипт із Завдання 1 так, щоб він писав номер рядка перед фразою (наприклад: "1. Автоматизація..."). Підказка: згадайте приклад про школу.

🔹 Завдання 3: Виправи помилку Студент написав код, щоб привітати користувачів зі списку, але код не працює. Чому?

users = ["Аліна", "Богдан", "Віка"]
print("Привіт, " + user) # Помилка тут

Підказка: Де тут цикл? Комп'ютер не знає, хто такий user, поки ми не скажемо for user in users:.

🔹 Завдання 4: Міні-кейс У вас є список цін: [100, 200, 300]. Напишіть скрипт, який автоматично додає до кожної ціни податок 20% і виводить фінальну суму.

🔹 Завдання 5: А що, якщо... Що станеться, якщо ваш скрипт спробує створити папку "Архів", а така папка вже існує? Спробуйте подумати, як запобігти помилці (гуглити: "python check if folder exists").


5. 💡 Мислення як у розробника

Ось де ми переходимо від новачків до профі. Як думає досвідчений інженер?

1. "Dry Run" (Холостий прогін) — Золоте правило

Новачок пише скрипт для видалення старих файлів і відразу запускає. Бабах! Видалив весільні фото замість тимчасових файлів. Профі: Завжди спочатку пише print("Я збираюся видалити файл: " + file_name), запускає, дивиться очима список, і тільки потім замінює print на команду видалення.

2. Принцип XKCD (Час проти Автоматизації)

Не треба автоматизувати те, що ви робите раз на рік і це займає 5 хвилин. Якщо написання скрипта займе 3 години, а економія — 5 хвилин на рік, не робіть цього. Автоматизуйте те, що повторюється часто.

3. Ледача досконалість

Хороший розробник — ледачий. Якщо є готова бібліотека (наприклад, для роботи з Excel файлами — pandas або openpyxl), він не буде писати свій парсер. Він візьме готове.


6. 🧩 Підсумок

Отже, що ми сьогодні зробили?

  1. Зрозуміли, що скрипт — це ваш персональний робот для нудних справ.
  2. Розібрали, що в основі лежить цикл (перебір елементів) та умова (що з ними робити).
  3. Навчилися бути обережними і використовувати Dry Run.

Тепер ви вмієте: Бачити рутинну задачу і думати: "Гей, я не буду робити це руками. Я напишу скрипт". Це і є мислення програміста.

🔜 У наступній серії: Ми автоматизували файли на комп'ютері. Але що, якщо дані живуть в інтернеті? Наступного разу ми поговоримо про API та Web Scraping — як писати скрипти, які самі гуляють інтернетом і збирають для вас інформацію (наприклад, ціни на авіаквитки).

А поки — спробуйте не робити руками те, що можна зробити кодом. Це CS50! 🚀