حذف منتج من القائمة: صحّح الأخطاء قبل طباعة التقرير
في الدرس السابق أضفنا قائمة أوامر للبرنامج. الآن سنضيف أمرًا جديدًا يسمح للمستخدم بحذف منتج أضيف بالخطأ قبل عرض التقرير النهائي.
ما النتيجة التي يجب أن تخرج بها؟
في نهاية الدرس ستكون قائمة البرنامج بهذا الشكل:
----- قائمة البرنامج ----- 1. إضافة منتج 2. عرض التقرير 3. حذف منتج 4. خروج
وعند اختيار حذف منتج، يعرض البرنامج المنتجات بأرقام:
1. Keyboard: 100.00 ريال 2. Mouse: 50.00 ريال
لماذا نحتاج حذف منتج؟
المستخدم قد يضيف منتجًا بالخطأ، أو يكتب منتجًا مكررًا، أو يقرر حذف منتج قبل عرض التقرير.
في هذه الحالة لا نريد منه إغلاق البرنامج وإعادة العمل من البداية. الأفضل أن نعطيه أمرًا واضحًا لحذف المنتج.
أنشئ ملف الدرس الثامن والعشرين
افتح مجلد الدورة داخل VS Code:
python_course
ثم أنشئ ملفًا جديدًا باسم:
lesson_28.py
افتح الملف داخل Editor.
حدّث قائمة الأوامر
عدّل دالة print_menu لتصبح:
def print_menu():
print()
print("----- قائمة البرنامج -----")
print("1. إضافة منتج")
print("2. عرض التقرير")
print("3. حذف منتج")
print("4. خروج")
الآن صار عند المستخدم أمر جديد للحذف.
اكتب دالة عرض المنتجات بأرقام
قبل حذف منتج، يجب أن نعرض المنتجات بأرقام واضحة:
def print_products(products):
if len(products) == 0:
print("لا توجد منتجات حتى الآن")
return False
ثم نطبع المنتجات:
print("----- المنتجات الحالية -----")
for index in range(len(products)):
product = products[index]
name = product["name"]
price = product["price"]
print(f"{index + 1}. {name}: {price:.2f} ريال")
return True
افهم pop قبل استخدامه
في Python نستطيع حذف عنصر من قائمة باستخدام:
deleted_product = products.pop(index)
هذا السطر يفعل شيئين:
اكتب دالة حذف المنتج
أولًا: ابدأ الدالة وتأكد أن هناك منتجات:
def delete_product(products):
if print_products(products) == False:
return 0
ثانيًا: اطلب رقم المنتج من المستخدم:
delete_text = input("اكتب رقم المنتج المراد حذفه: ").strip()
ثالثًا: حاول تحويل الرقم إلى int:
try:
delete_number = int(delete_text)
except ValueError:
print("رقم المنتج غير صحيح")
return 0
رابعًا: حوّل رقم المستخدم إلى index:
index = delete_number - 1
خامسًا: تأكد أن الرقم داخل حدود القائمة:
if index < 0 or index >= len(products):
print("رقم المنتج غير موجود")
return 0
سادسًا: احذف المنتج وأرجع سعره:
deleted_product = products.pop(index)
print(f"تم حذف المنتج: {deleted_product['name']}")
return deleted_product["price"]
رتّب الكود النهائي على أجزاء
الجزء الأول: الإعدادات ودوال الحساب:
TAX_RATE = 0.15
def calculate_tax(total):
return total * TAX_RATE
def calculate_final_total(total, tax):
return total + tax
الجزء الثاني: إنشاء المنتج وعرض القائمة:
def create_product(product_name, price):
product = {
"name": product_name,
"price": price
}
return product
def print_menu():
print()
print("----- قائمة البرنامج -----")
print("1. إضافة منتج")
print("2. عرض التقرير")
print("3. حذف منتج")
print("4. خروج")
الجزء الثالث: دالة إضافة منتج:
def add_product(products):
name_prompt = "اسم المنتج: "
price_prompt = "سعر المنتج: "
product_name = input(name_prompt).strip()
price_text = input(price_prompt).strip()
أكمل دالة الإضافة بفحص السعر:
try:
price = float(price_text)
except ValueError:
print("السعر غير صحيح، اكتب رقمًا فقط")
return 0
if price < 0:
print("السعر لا يمكن أن يكون سالبًا")
return 0
ثم أنشئ المنتج وأرجع السعر:
product = create_product(
product_name,
price
)
products.append(product)
print("تمت إضافة المنتج بنجاح")
return price
الجزء الرابع: دالة عرض المنتجات:
def print_products(products):
if len(products) == 0:
print("لا توجد منتجات حتى الآن")
return False
print("----- المنتجات الحالية -----")
أكمل عرض المنتجات:
for index in range(len(products)):
product = products[index]
name = product["name"]
price = product["price"]
print(f"{index + 1}. {name}: {price:.2f} ريال")
return True
الجزء الخامس: دالة حذف المنتج:
def delete_product(products):
if print_products(products) == False:
return 0
delete_text = input("اكتب رقم المنتج المراد حذفه: ").strip()
حوّل رقم الحذف وتحقق منه:
try:
delete_number = int(delete_text)
except ValueError:
print("رقم المنتج غير صحيح")
return 0
index = delete_number - 1
احذف المنتج إذا كان الرقم صحيحًا:
if index < 0 or index >= len(products):
print("رقم المنتج غير موجود")
return 0
deleted_product = products.pop(index)
print(f"تم حذف المنتج: {deleted_product['name']}")
return deleted_product["price"]
الجزء السادس: دالة التقرير:
def print_report(products, total, tax, final_total):
if len(products) == 0:
print("لا توجد منتجات حتى الآن")
return
print("----- تقرير المنتجات -----")
أكمل طباعة التقرير:
for product in products:
name = product["name"]
price = product["price"]
print(f"{name}: {price:.2f} ريال")
print(f"عدد المنتجات: {len(products)}")
print(f"الإجمالي قبل الضريبة: {total:.2f} ريال")
print(f"الضريبة: {tax:.2f} ريال")
print(f"الإجمالي النهائي: {final_total:.2f} ريال")
الجزء السابع: بداية main:
def main():
products = []
total = 0
menu_prompt = "اختر رقم الأمر: "
الجزء الثامن: أوامر الإضافة والحذف داخل main:
while True:
print_menu()
choice = input(menu_prompt).strip()
if choice == "1":
added_price = add_product(products)
total = total + added_price
elif choice == "3":
deleted_price = delete_product(products)
total = total - deleted_price
الجزء التاسع: عرض التقرير والخروج:
elif choice == "2":
tax = calculate_tax(total)
final_total = calculate_final_total(
total,
tax
)
print_report(
products,
total,
tax,
final_total
)
elif choice == "4":
print("تم إنهاء البرنامج")
break
else:
print("اختيار غير صحيح، حاول مرة أخرى")
الجزء العاشر والأخير: تشغيل البرنامج:
main()
شغّل البرنامج
احفظ الملف:
Ctrl + S
ثم شغله:
python lesson_28.py
وإذا لم يعمل أمر python:
py lesson_28.py
اختبر حذف منتج
أولًا: أضف منتجين:
اختر رقم الأمر: 1 اسم المنتج: Keyboard سعر المنتج: 100 تمت إضافة المنتج بنجاح اختر رقم الأمر: 1 اسم المنتج: Mouse سعر المنتج: 50 تمت إضافة المنتج بنجاح
ثانيًا: اختر حذف منتج:
اختر رقم الأمر: 3 ----- المنتجات الحالية ----- 1. Keyboard: 100.00 ريال 2. Mouse: 50.00 ريال اكتب رقم المنتج المراد حذفه: 2 تم حذف المنتج: Mouse
ثالثًا: اعرض التقرير:
اختر رقم الأمر: 2 ----- تقرير المنتجات ----- Keyboard: 100.00 ريال عدد المنتجات: 1 الإجمالي قبل الضريبة: 100.00 ريال الضريبة: 15.00 ريال الإجمالي النهائي: 115.00 ريال
اختبر رقمًا غير صحيح
جرّب حذف رقم غير موجود:
اختر رقم الأمر: 3 اكتب رقم المنتج المراد حذفه: 9 رقم المنتج غير موجود
وجرّب إدخال نص بدل رقم:
اختر رقم الأمر: 3 اكتب رقم المنتج المراد حذفه: abc رقم المنتج غير صحيح
اختبار نهاية الدرس
قبل الانتقال للدرس القادم، تأكد أنك فهمت هذه النقاط:
خلاصة الدرس
تعلمنا كيف نضيف أمر حذف منتج إلى برنامج المشتريات. عرضنا المنتجات بأرقام، وحولنا رقم المستخدم إلى index، ثم استخدمنا pop لحذف المنتج من القائمة.
تذكر القاعدة:
اعرض المنتجات اقرأ رقم المنتج حوّل الرقم إلى index تحقق من صحة index احذف باستخدام pop
في الدرس القادم سنتعلم تعديل منتج أو سعره بدل حذفه وإضافته من جديد.
💬 التعليقات
لا توجد تعليقات بعد.
🚫 يجب تسجيل الدخول لإضافة تعليق. دخول / تسجيل