Модуль 1: Встановлення Python та перший запуск

УРОК 1

Час45-60 хвилин
РівеньЗ нуля, досвід не потрібен
РезультатРобочий скрипт для пошуку в текстових даних

Про що цей курс

Уяви: на столі лежить тисяча аркушів з перехопленими повідомленнями. Треба знайти всі згадки координат, часу виходу на зв'язок, позивних. Вручну — це дні роботи. Python зробить те саме за секунди.

Python — це мова програмування. Але тобі не потрібно ставати програмістом. Треба навчитися трьом речам:

Це як із радіостанцією: не обов'язково знати, як працює кожен транзистор. Достатньо вміти налаштувати частоту, увімкнути і прийняти повідомлення.

Що зможеш після цього уроку

Терміни, які зустрінуться

PythonМова програмування. Читається "пайтон". Назва від Monty Python, не від змії.
СкриптФайл з командами. Як бойове завдання для комп'ютера: виконує по порядку, що написано.
ТерміналВікно для текстових команд. В Windows називається "Командний рядок" або PowerShell.
ЗміннаКоробка з підписом, куди кладемо дані. Наприклад, змінна 'позивний' може містити текст "Сокіл-1".
РядокОдин рядок тексту у файлі. Або тип даних — текст у лапках.

Встановлення Python

Windows

⚠ УВАГА: Галочка "Add Python to PATH" — критично важлива. PATH — це список місць, де система шукає програми. Без цієї галочки система не знайде Python, і доведеться перевстановлювати. Якщо пропустив — видали Python через "Програми та засоби" і встанови заново.

Linux (Ubuntu/Debian)

Python зазвичай вже встановлений. Перевір версію — відкрий термінал і введи:

python3 --version

Якщо бачиш "Python 3.10" або вище — все готово. Якщо ні:

sudo apt update sudo apt install python3 python3-pip

Перевірка встановлення

Відкрий термінал:

Введи команду:

python --version

На Linux може знадобитися:

python3 --version

Якщо бачиш "Python 3.10.х" або вище — встановлення успішне.

✓ Що означає відповідь: система знайшла Python і показує його версію. 3.10, 3.11, 3.12 — все підходить. Якщо бачиш 2.7 — це стара версія, потрібна 3.х.

Редактор коду

Скрипти — це текстові файли. Можна писати в Блокноті, але незручно: немає підсвічування синтаксису (різні частини коду різними кольорами) і підказок про помилки. Використовуй VS Code — безкоштовний редактор від Microsoft.

Робоча папка

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

Усі файли з кодом і дані для аналізу зберігай у цій папці.

Перша задача: пошук у тексті

Ситуація

Є файл з перехопленими повідомленнями. Потрібно швидко знайти всі рядки, де згадується слово "позиція" (у будь-якій формі: позиція, позиції, позицію). Вручну — гортати сотні рядків. Скриптом — секунди.

Вхідні дані

Створи файл messages.txt у папці C:\osint (або ~/osint на Linux). Відкрий його в VS Code і вставити цей текст:

[2025-01-15 08:23] Група на позиції 48.4567, 35.0234 [2025-01-15 08:45] Переміщення до точки збору [2025-01-15 09:12] Звичайний текст без координат [2025-01-15 09:30] Нова позиція підтверджена [2025-01-15 10:15] Зв'язок встановлено [2025-01-15 10:45] Група залишила позицію [2025-01-15 11:00] Рух у напрямку позиції спостереження [2025-01-15 11:30] Отримано підтвердження

Збережи файл: Ctrl+S.

Скрипт

Створи новий файл search.py у тій самій папці. Скопіюй цей код:

# Скрипт для пошуку рядків із ключовим словом # Файл: search.py # -------- НАЛАШТУВАННЯ -------- # Яке слово шукаємо (можна змінити на будь-яке) keyword = "позиці" # Який файл читаємо filename = "messages.txt" # ------------------------------ # Лічильник знайдених рядків count = 0 # Відкриваємо файл для читання # encoding="utf-8" — щоб коректно читати українські літери with open(filename, "r", encoding="utf-8") as file: # Читаємо файл рядок за рядком for line in file: # Перевіряємо: чи є ключове слово в рядку? # .lower() переводить у нижній регістр # Це потрібно, щоб знайти і "Позиція", і "позиція", і "ПОЗИЦІЯ" if keyword.lower() in line.lower(): # Якщо знайшли — збільшуємо лічильник count = count + 1 # Виводимо знайдений рядок # .strip() прибирає зайві пробіли та переноси на початку і в кінці print(f"[{count}] {line.strip()}") # Виводимо підсумок print(f"\nУсього знайдено рядків: {count}")

Як запустити

cd C:\osint

На Linux:

cd ~/osint
python search.py

На Linux може бути:

python3 search.py

Очікуваний результат

[1] [2025-01-15 08:23] Група на позиції 48.4567, 35.0234 [2] [2025-01-15 09:30] Нова позиція підтверджена [3] [2025-01-15 10:45] Група залишила позицію [4] [2025-01-15 11:00] Рух у напрямку позиції спостереження Усього знайдено рядків: 4
✓ Якщо бачиш такий результат — все працює. Скрипт знайшов 4 рядки, де є "позиці" (частина слів "позиції", "позиція", "позицію").

Як працює цей код

Розберемо кожну частину. Не треба запам'ятовувати — треба розуміти логіку.

КодЩо робить
keyword = "позиці"Створюємо змінну keyword і кладемо в неї текст. Лапки означають, що це саме текст, а не команда.
count = 0Створюємо лічильник. Починаємо з нуля, бо ще нічого не знайшли.
with open(...) as file:Відкриваємо файл. with гарантує, що файл закриється після роботи (як закрити двері за собою).
for line in file:Цикл: бери рядки по черзі. line — змінна, куди потрапляє поточний рядок.
if ... in ...:Умова: якщо одне міститься в іншому. Як питання "чи є слово в реченні?"
.lower()Переводить текст у нижній регістр. "Позиція" стає "позиція". Потрібно для пошуку незалежно від регістру.
count = count + 1Збільшуємо лічильник на 1. Можна писати коротше: count += 1
print(f"...")Виводить текст на екран. f перед лапками дозволяє вставляти змінні через {}.
.strip()Прибирає пробіли та переноси рядка з країв тексту.

Ключова ідея: відступи

У Python відступи (пробіли на початку рядка) — це не оформлення, а частина синтаксису. Вони показують, що до чого належить:

for line in file: # Початок циклу if keyword in line: # Це всередині циклу (4 пробіли) count = count + 1 # Це всередині if (8 пробілів) print(line) # Теж всередині if print("Кінець") # Це вже після циклу (без відступу)

Як у військовій структурі: все, що з відступом — підпорядковане тому, що вище без відступу.

Якщо щось пішло не так

Помилки — це нормально. Python намагається пояснити, що не так. Ось найчастіші:

ПомилкаЩо робити
FileNotFoundError: No such file or directory: 'messages.txt'Файл не знайдено. Перевір: 1) ти в правильній папці (cd C:\osint), 2) файл називається саме messages.txt, 3) файл збережено.
SyntaxError: invalid syntaxПомилка в написанні коду. Перевір лапки (кожна відкрита має бути закрита), двокрапки після if/for/with, дужки.
IndentationError: expected an indented blockПроблема з відступами. Після рядка з двокрапкою наступний рядок має бути з відступом (4 пробіли).
'python' is not recognizedСистема не знаходить Python. Скоріш за все, не поставив галочку 'Add to PATH'. Перевстанови Python.
UnicodeDecodeErrorПроблема з кодуванням. Відкрий messages.txt у VS Code, внизу праворуч натисни на кодування, вибери 'Save with Encoding' → UTF-8.

Робота з AI

AI (Claude, ChatGPT) може писати код за описом задачі. Але якість результату залежить від того, як ти поставиш задачу.

Поганий запит

Напиши скрипт для аналізу тексту

Проблема: занадто загально. AI видасть щось абстрактне, що доведеться переробляти.

Хороший запит

Напиши Python-скрипт, який: 1. Читає файл messages.txt у кодуванні UTF-8 2. Шукає рядки, що містять слово "позиці" (без урахування регістру) 3. Виводить знайдені рядки з нумерацією 4. В кінці показує загальну кількість знайдених рядків Додай коментарі до кожного рядка коду українською мовою.

Чому краще: конкретний файл, конкретна задача, формат виводу, вимога до коментарів.

Як перевірити код від AI

Типові помилки AI

Чек-лист: все працює?

☐ python --version показує 3.10 або вище ☐ VS Code встановлено, розширення Python додано ☐ Створено папку C:\osint (або ~/osint) ☐ Файл messages.txt у папці ☐ Скрипт search.py у тій самій папці ☐ Скрипт запускається без помилок ☐ Результат показує 4 знайдені рядки

Самостійна практика

Спробуй змінити скрипт:

Наступний урок

Урок 2: Витягування координат з тексту

Навчимося знаходити координати в різних форматах (десяткові, градуси-хвилини-секунди) і зберігати результати в таблицю.