Модуль 4: Структури даних

Кортежі та множини

📖 Теорія
Кортеж (tuple) — незмінний список. Створюється через ().
Коли використовувати: коли дані не повинні змінюватися (координати, RGB-кольори, записи БД).

Множина (set) — колекція унікальних елементів без порядку.
Коли використовувати: видалення дублів, перевірка належності, математичні операції (об'єднання, перетин).

Основні операції множин:
• add() — додати елемент
• remove() — видалити елемент
• | — об'єднання
• & — перетин
• - — різниця
💡 Приклад коду
Вивід:

                        
📝 ЗАВДАННЯ (3)
1.
Завдання 1: Унікальні слова
10 XP
Попросіть користувача ввести речення. Виведіть кількість унікальних слів та їх список (без повторів).
💡 Підказка: Перетворіть список слів у множину через set()
🔓 Розв'язок:
sentence = input('Введіть речення: ')
words = sentence.lower().split()
unique_words = set(words)
print(f'Унікальних слів: {len(unique_words)}')
print(sorted(unique_words))
Вивід:

                                

2.
Завдання 2: Спільні друзі
20 XP
Створіть дві множини з іменами друзів двох людей. Знайдіть і виведіть: спільних друзів (перетин), унікальних друзів кожного (різниця), усіх друзів разом (об'єднання).
💡 Підказка: Використовуйте оператори множин: & (перетин), - (різниця), | (об'єднання)
🔓 Розв'язок:
friends_alice = {'Іван', 'Марія', 'Петро', 'Ольга'}
friends_bob = {'Марія', 'Сергій', 'Ольга', 'Діма'}
print('Спільні друзі:', friends_alice & friends_bob)
print('Тільки в Аліси:', friends_alice - friends_bob)
print('Тільки в Боба:', friends_bob - friends_alice)
print('Усі друзі:', friends_alice | friends_bob)
Вивід:

                                

3.
Завдання 3: Каталог товарів із кортежами
30 XP
Створіть список кортежів виду (назва, ціна, кількість) для 4-5 товарів. Виведіть товари у вигляді таблиці. Знайдіть найдорожчий товар і загальну вартість усіх товарів (ціна * кількість).
💡 Підказка: Для кожного кортежу можна розпакувати: for name, price, qty in products. Загальна вартість = sum(price * qty for ...).
🔓 Розв'язок:
products = [
    ('Хліб', 50, 2),
    ('Молоко', 80, 3),
    ('Сир', 350, 1),
    ('Яблука', 120, 4),
    ('Чай', 150, 2)
]
print(f'{"Товар":<12} {"Ціна":>8} {"К-сть":>8} {"Сума":>8}')
print('-' * 38)
total = 0
for name, price, qty in products:
    subtotal = price * qty
    total += subtotal
    print(f'{name:<12} {price:>8} {qty:>8} {subtotal:>8}')
print('-' * 38)
print(f'{"РАЗОМ:":<12} {"": >8} {"": >8} {total:>8}')
expensive = max(products, key=lambda p: p[1])
print(f'Найдорожчий: {expensive[0]} ({expensive[1]} грн.)')
Вивід: