Menu
Coddy logo textTech

Generowanie raportu

Część sekcji Logika i przepływ programu ścieżki Python w Coddy. Lekcja 71 z 78.

challenge icon

Wyzwanie

Trudny

System zarządzania zapasami ma już zaimplementowane następujące komponenty:

  1. Globalny słownik inventory, w którym:
    • Kluczami są nazwy produktów (ciągi znaków)
    • Wartościami są słowniki zawierające:
      • "price": cenę produktu (liczba zmiennoprzecinkowa)
      • "stock": aktualną ilość w magazynie (liczba całkowita)
  2. Funkcję add_item(item, price, stock), która dodaje nowe produkty do zapasów
  3. Funkcję update_stock(item, quantity), która aktualizuje stan zapasów
  4. Funkcję check_availability(item), która zwraca aktualny stan zapasów

Twoim zadaniem jest zaimplementowanie funkcji sales_report(sales), która:

  1. Przyjmuje słownik sales, w którym:
    • Kluczami są nazwy produktów
    • Wartościami są sprzedane ilości
  2. Dla każdego produktu w słowniku sprzedaży:
    • Sprawdza, czy produkt znajduje się w zapasach
    • Sprawdza, czy stan zapasów jest wystarczający
    • Aktualizuje zapasy, zmniejszając ich stan
    • Oblicza przychód na podstawie ceny i sprzedanej ilości
  3. Zwraca sformatowany ciąg znaków z łącznym przychodem

Obsłuż następujące błędy:

  • Jeśli produktu nie ma w zapasach, wyświetl: "Error: Item '{item}' not found."
  • Jeśli stan zapasów jest niewystarczający, wyświetl: "Error: Insufficient stock for '{item}'."

Wynik powinien być ciągiem znaków w formacie: “Total revenue: ${total:.2f}”

 

Dodaj (zastąp) poniższy blok kodu na końcu swojego kodu:

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)

Spróbuj swoich sił

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"

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator Python online