Практична №5.1: Робота з рядками

Автор

Vadym Katsel

Дата публікації

2026-05-04

📌 План на сьогодні

  • Що таке рядки
  • Рядок як структура даних
  • Live coding 1
  • Операції з рядками
  • Live coding 2
  • Ваше завдання та QA

❓ Що таке рядки і як вони працюють?

Рядок

Це послідовність символів, які використовуються для зберігання та представлення текстової інформації в програмуванні. Рядки можуть містити літери, цифри, пробіли, спеціальні символи та інші знаки.

Синтаксис

  • Одинарні: 'Привіт, світе!'
  • Подвійні: "Це теж рядок"
  • Потрійні: """Для багаторядкового тексту"""

🫙 Рядок як структура даних

З попередньо визначення випливає те, що рядок є послідовністю символів. Це означає, що кожен символ у рядку має свою позицію (індекс), починаючи з нуля.

text = "Hello, World!"

print(f"{text[0]} {text[1]} {text[2]} {text[3]} {text[4]}")  
H e l l o

Це означає що ми можемо робити наступне:

  • Отримати доступ до будь якого символу за індексом
  • Ітеруватися по кожному символу в рядку
print("--- По символах: ---")
for char in "Hello":
    print(f"Символ: {char}")
--- По символах: ---
Символ: H
Символ: e
Символ: l
Символ: l
Символ: o

🛑 Attention, Immutability!

Рядки в Python є незмінними (immutable), що означає, що після створення рядка його вміст не може бути змінений. Будь-які операції, які здаються зміною рядка, насправді створюють новий рядок.

my_string = "Hello"
my_string[0] = "J"   # -> ЦЕ ВИКЛИЧЕ ПОМИЛКУ!

Щоб змінити рядок, потрібно створювати новий

💻 Live coding 1: валідація ЄДРПОУ

ПриміткаЗадача

Уявіть, що нам треба перевірити код ЄДРПОУ (податковий код компанії), який вводить користувач.

Бізнес-правила для цього коду:

  • Він повинен містити рівно 8 цифр
  • Він не повинен містити жодних букв чи інших символів

Операції над рядками

“Очисні” існтрументи

  • .strip() - видаляє пробіли на початку і в кінці рядка
dirty = "   1,500.25  "
clean = dirty.strip()
print(clean)
1,500.25
  • .lower()/.upper() - перетворює всі символи рядка в нижній регістр
messy_input = "uAh"
if messy_input.lower() == "uah":
    print("Це гривня!")
Це гривня!

“Хірургічні” інстурменти

  • .replace(old, new) - замінює всі входження old на new
price = "1,500.25 грн"
# Можна робити "ланцюжок" (chaining)
clean_price = price.replace(",", ".").replace(" грн", "")
# clean_price -> "1.500.25"
  • .split(separator) - розбиває рядок на список підрядків за вказаним роздільником
report_line = "Дохід: 1,200.50"
parts = report_line.split(":")
print(parts)
['Дохід', ' 1,200.50']

Перевірка вмісту рядка

  • Оператор in - перевіряє, чи існує підрядок всередині рядка. Повертає True або False
report = "Дохід: 500 грн"
if "грн" in report.lower():
    print("Це гривня!")
Це гривня!
  • .startswith(substring)/.endswith(substrig) - перевіряє, чи починається рядок з вказаного підрядка
iban = "UA1234567890"
email = "student@kse.ua"

# Перевірка банківського рахунку
if iban.startswith("UA"):
    print("Це український IBAN.")

# Перевірка корпоративної пошти
if email.endswith("@kse.ua"):
    print("Це корпоративна пошта KSE.")
Це український IBAN.
Це корпоративна пошта KSE.
  • .find(substring) - шукає підрядок у рядку і повертає індекс першого входження або -1, якщо не знайдено
report = "ID: 456 | User: Alice"

# Знаходимо, де починається "User: "
user_start_index = report.find("User: ")
print(f"Початок 'User: ': {user_start_index}") # -> 10
Початок 'User: ': 10

💻 Live coding 2: Extracting data

ПриміткаЗадача

У нас є рядок raw_record = "INFO: User 'alice' | TRANSACTION_ID: 831 | AMOUNT: 1,500.25$ ". Нам потрібно витягнути звідти тільки деякі дані

Нам не потрібен ID транзакції, нам потрібна тільки сума (1,500.25$), і нам треба перетворити її на float (1500.25), щоб ми могли з нею рахувати.

🎯 Ваше завдання та QA

ПриміткаЗавдання

Написати програму, яка просить користувача ввести один рядок у форматі “Ім’я, email@domain.com” і витягує з нього чисте доменне ім’я (наприклад, kse.com.ua) та ім’я користувача

⚒️ Воркфлоу:

  • Програма просить користувача ввести рядок: user_input = input("Введіть дані (формат 'Ім'я, email@domain.com'): ")

  • Приклад вводу: Іван Петренко, ivan.petrenko@kse.com.ua (зверніть увагу на можливі пробіли).

  • Використовуючи ланцюжок методів, які ми вивчили (в основному .split() та .strip()), програма має вивести домен.

  • Окрім цього, нехай програма також виведе ім’я користувача

  • Очікуваний результат роботи програми:

Enter data: Ivan Petrenko, ivan.petrenko@kse.com.ua
# Ваш вивід
Name: Ivan Petrenko, Domain: kse.com.ua

💡 Поради до виконання

  • Скористайтеся методом .split(), аби відрізати потрібну частинку рядка. Зверніть увагу на сам ввід, ви можете використати як роздільник символ “,” ( ну або щось інше _ )
  • Не забудьте прибрати зайві пробіли та символи (якщо буде така необхідність)
  • Припустимо, що користувач уводить тільки правильні дані