""" Урок 25. Практикум 6 — весь код примеров одним файлом. Источник: subjects/python-fundamentals/course/lessons/25-practice-6/examples.html Файл собран автоматически (tools/build_lesson_examples.py): правьте страницу урока. Запуск: python lesson-25.py """ # ==================================================================== # Пример 1. Список кортежей как мини-таблица # ==================================================================== # 01_tuples_as_rows.py products = [("Кофе", 127.99), ("Чай", 52.49), ("Шоколад", 81.99)] for item in products: print(item, item[0], item[1]) # ('Кофе', 127.99) Кофе 127.99 # ('Чай', 52.49) Чай 52.49 # ('Шоколад', 81.99) Шоколад 81.99 # ==================================================================== # Пример 2. Печать коллекции без цикла # ==================================================================== # 02_print_without_loop.py names = ["Молоко", "Хлеб", "Сахар"] print(*names, sep="\n") # Молоко # Хлеб # Сахар print(*names, sep=", ") # Молоко, Хлеб, Сахар # ==================================================================== # Пример 3. Распаковка кортежа в цикле # ==================================================================== # 03_unpacking.py products = [("Кофе", 127.99), ("Чай", 52.49), ("Шоколад", 81.99)] for name, price in products: print(name, "стоит", price) # Кофе стоит 127.99 # Чай стоит 52.49 # Шоколад стоит 81.99 # ==================================================================== # Пример 4. Фильтрация списка кортежей # ==================================================================== # 04_filtering.py stock = [("апельсин", 5), ("вишня", 12), ("киви", 18), ("ананас", 7)] print("Товары с остатком больше 10:") for name, amount in stock: if amount > 10: print(f" {name:<10} остаток: {amount}") # Товары с остатком больше 10: # вишня остаток: 12 # киви остаток: 18 # ==================================================================== # Пример 5. Денежный формат .2f # ==================================================================== # 05_money_format.py price = 127.9 print(f"{price:.2f}") # 127.90 print(f"{1234.5:.2f}") # 1234.50 print(f"{0.1 + 0.2:.2f}") # 0.30 — .2f сглаживает погрешность двоичной арифметики float # ==================================================================== # Пример 6. Таблица с фиксированной шириной колонок # ==================================================================== # 06_fixed_width.py products = [("Кофе", 127.99), ("Чай", 52.49), ("Шоколад", 81.99)] print(f"{'Название':<12} | {'Цена':>8}") print("-" * 23) for name, cost in products: print(f"{name:<12} | {cost:>8.2f}") # Название | Цена # ----------------------- # Кофе | 127.99 # Чай | 52.49 # Шоколад | 81.99 # ==================================================================== # Пример 7. Динамическая ширина колонки # ==================================================================== # 07_dynamic_width.py catalog = [("Молоко", 3), ("Подсолнечное масло", 5), ("Хлеб", 1)] name_width = 0 for name, quantity in catalog: if len(name) > name_width: name_width = len(name) name_width += 2 for name, quantity in catalog: print(f"| {name:<{name_width}} | {quantity:>5} |") # | Молоко | 3 | # | Подсолнечное масло | 5 | # | Хлеб | 1 | # ==================================================================== # Пример 8. Накопление итога и среднего # ==================================================================== # 08_totals.py salaries = [("Иван", 1600), ("Мария", 2000), ("Сергей", 2400)] total = 0 for name, salary in salaries: total += salary average = total / len(salaries) print("Сумма зарплат:", total) print("Средняя зарплата:", round(average, 2)) # Сумма зарплат: 6000 # Средняя зарплата: 2000.0 # ==================================================================== # Пример 9. Вложенная структура: клиент с покупками # ==================================================================== # 09_nested.py clients = [ ("Иван", 10, [("Кофе", 100.0), ("Чай", 200.0)]), ("Анна", 15, [("Шоколад", 150.0), ("Печенье", 50.0)]), ] for name, discount, purchases in clients: subtotal = 0 for item_name, item_price in purchases: subtotal += item_price final_price = subtotal * (1 - discount / 100) print(f"{name}: сумма покупок {subtotal:.2f}, скидка {discount}%, к оплате {final_price:.2f}") # Иван: сумма покупок 300.00, скидка 10%, к оплате 270.00 # Анна: сумма покупок 200.00, скидка 15%, к оплате 170.00 # ==================================================================== # Пример 10. Три ошибки в одном фрагменте # ==================================================================== # 10_common_mistakes.py data = [("вишня", 12), ("ананас", 7)] # лучше так: распаковка вместо индексов — сразу видно, что есть что for name, amount in data: print(name, amount) # вишня 12 # ананас 7 total = 0 for _, amount in data: total += amount # total объявлен один раз до цикла — суммирует всё верно print("Итог:", total) # Итог: 19