Практична №4.2

Автор

Vadym Katsel

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

2026-05-04

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

  • Dictionaries
  • Live coding
  • Tuples and sets
  • Q&A
  • Your task

❓ Що таке словники і навіщо вони потрібні?

Минулого разу ми вивчили Списки (Lists). Вони ідеальні для впорядкованих даних: sales = [1500, 2100, 1850]

Наприклад, у нас є студенти та їхні оцінки.” “Як би ми це зробили списками?”

📋📋 Паралельні списки

students = ['Олена', 'Іван', 'Марія']
grades = [10, 8, 12]

Це жахливо. Як дістати оцінку Івана?

Треба знайти ‘Івана’ в students. (Він на індексі 1).

Потім взяти елемент з індексом 1 зі списку grades. -> 8. Це складно, і все ламається, якщо ми видалимо ‘Олену’

💡 Рішення (майже) всіх проблем

Тут нам на допомогу приходять словники!

Словник - це структура даних, яка зберігає пари “ключ-значення”.

student_grades = {
  'Олена': 10,
  'Іван': 8,
  'Марія': 12,
  'key': value
}

Як дістати оцінку? Дуже просто:

print( student_grades['Іван'] )
#         our dict      key
# We're using a key to get a value

Властивості словників

  • Словники зберігають дані у вигляді key : value
    • Це “серце” словника. Кожен елемент — це пара.

    • student = { 'name': 'Олена', 'course': 2 }

    • 'name' — це Ключ (Key).

    • 'Олена’ — це Значення (Value).

  • Правила ключів:
    • Унікальні: один ключ не може мати два значення. Якщо ви спробуєте старе значення просто перезапишеться.
    • Зазвичайключами є рядки або числа. Списки не можуть бути ключами
  • Головні операції:
    • Доступ: отримуємо значення за ключем
  print( student['name'] ) # -> 'Олена'
# print( student[0] ) # -> ПОМИЛКА!
  • Додавання/заміна: Однаковий синтаксис. Якщо ключ є — змінює, якщо немає — створює.
student['course'] = 3     # Змінить 2 на 3
student['email'] = 'a@kse.ua' # Додасть нову пару
  • Перевірка: Оператор in (який ви знаєте зі списків) перевіряє наявність ключа.
if 'email' in student:
    print("Email вже є!")
  • Довжина: len() рахує кількість пар.
len(student) # -> 3 (name, course, email)
  • Перебір: for key, value in studnet.items()

👨🏻‍💻 Live coding

NoneЗавдання

Ми створюємо профіль для одного юзера. Нам треба його створити, а потім оновити дані.

Задача:

  • Створити словник user_profile з ключами username (значення “alice”) та status (значення “online”).
  • Вивести status юзера “alice”.
  • Оновити status на “offline”.
  • Додати новий ключ email зі значенням “alice@kse.ua”.
  • Вивести фінальний словник.

Ми маємо той самий профіль. Нам треба, по-перше, безпечно перевірити, чи є у нього email, а по-друге, гарно вивести весь профіль.

Задача:

  • Взяти user_profile з минулого кроку.

  • Перевірити, чи існує ключ “email”.

  • Якщо так, вивести f"Email: {user_profile['email']}".

  • Якщо ні, вивести "Email не вказано".

  • Перебрати весь словник і вивести всі пари “Ключ -> Значення”.

⚒️ Спецінструменти:

Tuples (кортежі)

  • Що це? Це як список, але НЕЗМІННИЙ (immutable).

  • Аналогія: “Список, залитий у бетон”.

  • Синтаксис: () (круглі дужки) my_tuple = (1, ‘a’, True)

  • Головна фішка: Їх не можна змінити після створення.

config_tuple = ('admin', 'pass123', 'kse.ua')
print(f"Юзер: {config_tuple[0]}, Сервер: {config_tuple[2]}")

# А тепер спробуємо змінити:
# config_tuple[0] = 'guest' 
# ^ Це миттєво викличе TypeError: 'tuple' object does not support item assignment

Sets (множини)

  • Що це? Це як список, але тільки УНІКАЛЬНІ елементи, і без порядку.

  • Аналогія: “Клуб унікальних”.

  • Синтаксис: set([ … ]) або {1, 2, 3}

Увага! {} — це порожній словник. Порожня множина створюється так: my_set = set().

visitors = ['Іван', 'Анна', 'Іван', 'Петро', 'Анна', 'Марія', 'Іван']
print(f"Список гостей (з дублікатами): {visitors}")

unique_visitors = set(visitors)
print(f"Унікальні гості (без дублікатів): {unique_visitors}")
print(f"Кількість унікальних: {len(unique_visitors)}")
# Студенти, що взяли курс з Економіки
econ_students = {'Іван', 'Анна', 'Петро', 'Марія'}

# Студенти, що взяли курс зі Статистики
stat_students = {'Анна', 'Петро', 'Давид', 'Софія'}

# 1. Хто ходить на ОБИДВА курси? (Перетин)
both_courses = econ_students & stat_students
print(f"Ходять на обидва курси: {both_courses}")

# 2. Хто ходить ТІЛЬКИ на Економіку? (Різниця)
only_econ = econ_students - stat_students
print(f"Ходять тільки на Економіку: {only_econ}")

# 3. Який загальний список унікальних студентів? (Об'єднання)
all_students = econ_students | stat_students
print(f"Всі унікальні студенти: {all_students}")

🔍 Задача: “Менеджер Інвентарю”

Завдання

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

Воркфлоу: