Практична 2

 

Тема 1: Основи доступу до даних через індексацію та зрізи

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

Завдання 1.1: Деконструкція ідентифікатора (Демонстраційне)

Умова: Дано артикул товару у форматі "ID-4592-L". Необхідно вивести окремо тип товару (перші дві літери), числовий код (чотири цифри всередині) та розмір (остання літера), використовуючи зрізи та негативну індексацію.

Покроковий алгоритм виконання:

  1. Створити змінну article = "ID-4592-L".

  2. Отримати перші два символи через зріз [:2]. Пам’ятайте, що верхня межа не включається.

  3. Визначити позицію цифр. Вони починаються з 3-го індексу і закінчуються перед 7-м. Використати зріз [3:7].

  4. Для отримання останнього символу використати негативний індекс [-1], що гарантує доступ до кінця рядка незалежно від його довжини.1

  5. Вивести отримані результати на екран.

Програмне рішення:


Python



article = "ID-4592-L"

# Використання зрізів для отримання частин рядка
product_type = article[:2]
numeric_code = article[3:7]
# Використання негативного індексу для останнього символу
size = article[-1]

print(f"Тип товару: {product_type}")
print(f"Числовий код: {numeric_code}")
print(f"Розмір: {size}")

Завдання 1.2: Аналіз доменного імені (Самостійне)

Умова: Користувач вводить URL-адресу сайту у форматі "www.google.com". Напишіть програму, яка виводить лише назву сайту (без "www." та ".com"), використовуючи зрізи. Також виведіть окремо останній символ адреси, застосувавши негативну індексацію.


Тема 2: Трансформація тексту та очищення вхідних даних

Цей блок навчає використовувати методи для підготовки тексту до обробки, видалення зайвих символів та керування регістром, що є критично важливим для створення надійних інтерфейсів.

Завдання 2.1: Очищення та нормалізація імені користувача (Демонстраційне)

Умова: Користувач вводить своє ім’я з випадковими пробілами на початку та в кінці, а також у довільному регістрі (наприклад, " mArIyA "). Програма повинна очистити рядок і вивести ім’я у форматі "Title Case" (перша літера велика, решта — малі).

Покроковий алгоритм виконання:

  1. Отримати ввід користувача у змінну raw_name.

  2. Видалити пробільні символи з обох боків рядка за допомогою методу strip().4

  3. Застосувати метод capitalize() до очищеного рядка. Цей метод автоматично зробить першу літеру великою, а всі наступні — малими.9

  4. Вивести результат, огорнувши його в декоративні рамки для візуальної перевірки відсутності пробілів.

Програмне рішення:


Python



raw_name = "  mArIyA  "

# Послідовне застосування методів (ланцюжок методів)
clean_name = raw_name.strip().capitalize()

print(f"Оброблений результат: |{clean_name}|")

Завдання 2.2: Форматування заголовків новин (Самостійне)

Умова: Користувач вводить заголовок статті у нижньому регістрі (наприклад, "python стає найпопулярнішою мовою"). Напишіть програму, яка перетворює цей рядок так, щоб кожне слово починалося з великої літери (використовуйте відповідний метод трансформації регістру) та видаляє крапку в кінці, якщо вона там є (використовуйте rstrip(".")).


Тема 3: Пошук підрядків та заміна елементів

Блок фокусується на методах, що дозволяють виявляти специфічні патерни у тексті та модифікувати їх, створюючи нові рядкові об’єкти.

Завдання 3.1: Автоматична цензура повідомлень (Демонстраційне)

Умова: У чаті заборонено використовувати слово "погано". Напишіть програму, яка знаходить це слово у реченні, виводить його позицію (індекс) та замінює його на слово "чудово".

Покроковий алгоритм виконання:

  1. Створити змінну message = "Сьогодні все було дуже погано у школі.".

  2. Знайти індекс першого входження слова "погано" за допомогою методу find(). Зберегти індекс у змінну pos.

  3. Використати метод replace(), щоб створити новий рядок, де слово "погано" замінено на "чудово".2 Пам’ятайте, оригінальний рядок message не зміниться.3

  4. Вивести позицію слова та фінальне речення.

Програмне рішення:


Python



message = "Сьогодні все було дуже погано у школі."

# Пошук позиції підрядка
pos = message.find("погано")

# Заміна підрядка
new_message = message.replace("погано", "чудово")

print(f"Слово знайдено на позиції: {pos}")
print(f"Оновлене повідомлення: {new_message}")

Завдання 3.2: Детектор та коректор помилок (Самостійне)

Умова: Дано рядок "Пайтон - це круто. Пайтон допомагає вирішувати задачі.". Користувач хоче замінити англомовний варіант "Пайтон" на оригінальний "Python". Напишіть програму, яка підраховує кількість входжень слова "Пайтон", замінює всі його входження на "Python" і виводить підсумковий текст.


Тема 4: Робота зі списками слів та збирання рядків

Цей блок демонструє взаємодію рядків із типами даних "список", що є основою для парсингу речень та обробки великих текстів.

Завдання 4.1: Генератор списку покупок (Демонстраційне)

Умова: Маємо рядок, у якому товари перелічені через кому: "Яблука,Молоко,Хліб,Сир". Необхідно перетворити цей рядок у список окремих елементів, а потім знову зібрати їх у рядок, але вже розділяючи символом " -> ".

Покроковий алгоритм виконання:

  1. Визначити рядок data = "Яблука,Молоко,Хліб,Сир".

  2. Використати метод split(","), щоб розбити рядок на окремі елементи за розділювачем-комою. Результатом буде список.9

  3. Використати метод join(), який викликається у рядка-розділювача (" -> ") і приймає отриманий список як аргумент.8

  4. Вивести список та новий рядок.

Програмне рішення:


Python



data = "Яблука,Молоко,Хліб,Сир"

# Перетворення рядка у список
items_list = data.split(",")
print(f"Список товарів: {items_list}")

# Збирання списку в новий рядок з іншим розділювачем
formatted_string = " -> ".join(items_list)
print(f"Форматований вивід: {formatted_string}")

Завдання 4.2: Аналізатор речень (Самостійне)

Умова: Користувач вводить речення. Напишіть програму, яка розбиває це речення на слова (за замовчуванням split() використовує пробіл), підраховує кількість слів у реченні за допомогою len() та виводить кожне слово з нового рядка, використовуючи символ \n при збиранні списку назад у рядок методом join().


Тема 5: Професійне форматування та вирівнювання даних

Блок спрямований на освоєння специфікаторів f-рядків для створення структурованих звітів та таблиць, що виглядають охайно в консолі.

Завдання 5.1: Електронна відомість оцінок (Демонстраційне)

Умова: Маємо дані про учня: ім’я, предмет та бал. Потрібно вивести цю інформацію у вигляді табличного рядка, де ім’я вирівняне по лівому краю (ширина 15), предмет — по центру (ширина 20), а бал — по правому краю з двома знаками після коми (ширина 5).

Покроковий алгоритм виконання:

  1. Створити змінні: name = "Олександр", subject = "Інформатика", score = 11.5.

  2. Використати f-рядок із синтаксисом {змінна:специфікатор}.

  3. Для лівого вирівнювання використати <, для центру — ^, для правого — >.13

  4. Для форматування числа з плаваючою крапкою додати .2f після вказівника ширини.15

Програмне рішення:


Python



name = "Олександр"
subject = "Інформатика"
score = 11.5

# Створення заголовка таблиці
header = f"{'Учень':<15} | {'Предмет':^20} | {'Бал':>5}"
print(header)
print("-" * len(header))

# Вирівнювання даних за допомогою f-рядків
row = f"{name:<15} | {subject:^20} | {score:>5.2f}"
print(row)

Завдання 5.2: Чек з магазину (Самостійне)

Умова: Напишіть програму, яка приймає назву товару та його ціну. Виведіть чек, де назва товару займає 20 символів і заповнена крапками (наприклад, Молоко...............), а ціна вирівняна по правому краю у полі шириною 10 символів із символом валюти "грн". Використовуйте специфікатор заповнення в f-рядку (наприклад, :<20.).


Тема 6: Складна валідація та логічні перевірки

Завершальний блок поєднує методи рядків та умовні оператори для вирішення задач безпеки та перевірки складних правил.

Завдання 6.1: Валідатор пароля (Демонстраційне)

Умова: Користувач створює пароль. Програма повинна підтвердити його, якщо: довжина не менше 8 символів, він містить хоча б одну цифру та не містить пробілів.14

Покроковий алгоритм виконання:

  1. Отримати password через input().

  2. Перевірити довжину за допомогою len(password) >= 8.

  3. Перевірити відсутність пробілів: " " not in password.10

  4. Використати цикл або логічні методи для пошуку цифри. Найпростіший спосіб для початківців — перевірити метод isalnum() (літери та цифри) разом із isalpha() (лише літери). Якщо isalnum() — True, а isalpha() — False, значить у рядку є цифри або символи. Більш надійний спосіб — перевірити кожен символ у циклі for char in password: і використати char.isdigit().14

  5. Вивести результат перевірки.

Програмне рішення:


Python



password = input("Введіть пароль: ")

# Перевірка умов
length_ok = len(password) >= 8
no_spaces = " " not in password
# Перевірка наявності хоча б однієї цифри
has_digit = any(char.isdigit() for char in password)

if length_ok and no_spaces and has_digit:
    print("Пароль прийнято!")
else:
    print("Пароль не відповідає вимогам:")
    if not length_ok: print("- Мінімум 8 символів")
    if not no_spaces: print("- Не має містити пробілів")
    if not has_digit: print("- Має містити хоча б одну цифру")

Завдання 6.2: Перевірка банківської карти (Самостійне)

Умова: Банківська карта повинна складатися рівно з 16 символів, і всі вони мають бути цифрами. Напишіть програму, яка просить користувача ввести номер карти. Видаліть із вводу можливі пробіли (якщо користувач ввів "4444 4444...") за допомогою replace(" ", "") та перевірте, чи відповідає результат правилам (довжина 16 та метод isdigit()).


Коментарі