إنشاء تقرير
جزء من قسم 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المجموعات - الجزء الثاني
العمليات الرياضية - الجزء الأولالعمليات الرياضية - الجزء الثانيمراجعة - البحث عن الكنزالمجموعات الجزئية والمجموعات الشاملةالتكرار عبر المجموعاتمراجعة - متتبع البطولة10أساسيات تضمين القوائم (List Comprehensions)
الصيغة البرمجيةإنشاء قوائم بسيطةإضافة الشروطاستخدام تجميع البياناتمراجعة - بيت القوائممراجعة - عناصر الحرية5اتخاذ القرارات المتقدم
المعامل الثلاثيالتحقق من الانتماءالتحقق من الهويةأخطاء الإزاحةمراجعة - فلتر العطلات8مدير سجلات الطلاب
نظرة عامة على المشروعإضافة طالب3القواميس - الجزء الثاني
دوال القواميسالقواميس المتداخلةالتحقق من وجود المفاتيحالتكرار عبر القواميسمراجعة - عداد التكرار9تجميع البيانات المتقدم
استخدام Sumإيجاد الحد الأدنى والأقصىفرز البيانات بكفاءةمراجعة - Dictionary Sorter12أساسيات معالجة الأخطاء
ما هي معالجة الأخطاء؟كتلة Try و Exceptالتعامل مع استثناءات متعددةمراجعة - أخطاء عربة التسوق