Создание отчета
Часть раздела Logic & Flow путешествия по Python на Coddy — урок 71 из 78.
Задание
СложноВ системе инвентаризации уже реализованы следующие компоненты:
- Глобальный словарь
inventory, где:- Ключи — это названия товаров (строки)
- Значения — это словари, содержащие:
"price": Цена товара (float)"stock": Текущее количество на складе (integer)
- Функция
add_item(item, price, stock), которая добавляет новые товары в инвентарь - Функция
update_stock(item, quantity), которая обновляет уровень запасов - Функция
check_availability(item), которая возвращает текущий уровень запасов
Ваша задача — реализовать функцию sales_report(sales), которая:
- Принимает словарь
sales, где:- Ключи — это названия товаров
- Значения — это проданное количество
- Для каждого товара в словаре продаж:
- Проверяет, существует ли товар в инвентаре
- Проверяет, достаточно ли товара на складе
- Обновляет инвентарь, уменьшая уровень запасов
- Рассчитывает выручку на основе цены и проданного количества
- Возвращает отформатированную строку с общей выручкой
Обработайте следующие специфические ошибки:
- Если товара нет в инвентаре, выведите:
"Error: Item '{item}' not found." - Если товара недостаточно на складе, выведите:
"Error: Insufficient stock for '{item}'."
Результатом должна быть строка, отформатированная как: “Total revenue: ${total:.2f}”
Добавьте (замените) следующий блок кода в нижней части вашего кода:
add_item("Apple", 0.5, 50)
add_item("Banana", 0.2, 60)
sales = {"Apple": 30, "Banana": 20, "Orange": 10} # Orange should print an error
print(sales_report(sales)) # Should output: Total revenue: $19.00
print(inventory)Попробуйте сами
inventory = {}
def add_item(item, price, stock):
if item in inventory:
print(f"Error: Item '{item}' already exists.")
return
try:
inventory[item] = {"price": float(price), "stock": int(stock)}
print(f"Item '{item}' added successfully.")
except ValueError:
print("Error: Price and stock must be numeric.")
def update_stock(item, quantity):
if item not in inventory:
print(f"Error: Item '{item}' not found.")
return
try:
new_stock = inventory[item]["stock"] + int(quantity)
if new_stock < 0:
print(f"Error: Insufficient stock for '{item}'.")
else:
inventory[item]["stock"] = new_stock
print(f"Stock for '{item}' updated successfully.")
except ValueError:
print("Error: Quantity must be an integer.")
def check_availability(item):
if item not in inventory:
return "Item not found"
return inventory[item]["stock"]
add_item("Apple", 0.5, 100)
add_item("Banana", 0.2, 50)
update_stock("Apple", -20)
update_stock("Banana", 30)
print(check_availability("Apple")) # Should return 80
print(check_availability("Banana")) # Should return 80
print(check_availability("Orange")) # Should return "Item not found"Все уроки раздела Logic & Flow
1Изучение переменных
КонстантыМножественное присваиваниеОбмен значениями переменныхПеременные-заполнителиОкругление чиселПриведение к списку4Приложение «Книга контактов»
Показать менюДобавить контакт7Множества. Часть 2
Математические операции. Часть 1Математические операции. Часть 2Повторение — Охота за сокровищамиПодмножества и надмножестваИтерация по множествамПовторение — Трекер турнира10Базовые генераторы списков
СинтаксисСоздание простых списковДобавление условийИспользование агрегации данныхПовторение — Дом списковПовторение — Элементы свободы13Система управления запасами
Обзор проектаДобавление товара2Словари. Часть 1
Что такое словарь?Создание словаряДоступ к значениямИзменение словарейИтоги — Менеджер рецептов5Продвинутое принятие решений
Тернарный операторПроверка вхожденияПроверка идентичностиОшибки отступовПовторение — Фильтр отпусков8Менеджер записей студентов
Обзор проектаДобавить студента11Продвинутые функции
Возврат нескольких значенийLambda-функции. Часть 1Lambda-функции. Часть 2Задача на повторение — Lambda-сортировкаРекурсивные функции. Часть 1Рекурсивные функции. Часть 2Повторение — сумма вложенного списка14Функции высшего порядка
Функция mapФункция filterПовторение — Валидатор emailПовторение — Обработчик чисел3Словари. Часть 2
Методы словарейВложенные словариПроверка наличия ключейПеребор словарей в циклеПовторение: счетчик частоты6Множества. Часть 1
Что такое множество?Основные операцииМетоды множествПовторение — удаление дубликатов9Продвинутая агрегация данных
Использование SumПоиск минимума и максимумаЭффективная сортировка данныхПовторение — Dictionary Sorter