الدرس 22 من دورة Python للمبتدئين

تنظيم بيانات المنتج: استخدم dict بدل قائمتين منفصلتين

في الدرس السابق حفظنا أسماء المنتجات في قائمة، والأسعار في قائمة أخرى. اليوم سنجعل كل منتج يحمل بياناته في مكان واحد باستخدام dict، ثم نحفظ كل المنتجات داخل قائمة واحدة.

المستوى: مبتدئ جدًا النتيجة: بيانات منتج منظمة مدة التطبيق: 35 - 40 دقيقة
طريقة CIT للتعلم الهادئ: لا تحفظ dict ككلمة فقط. تخيله بطاقة منتج: فيها اسم المنتج وسعره وأي معلومة نحتاجها لاحقًا.
مهم قبل البداية: القوائم list ما زالت موجودة. الفرق أننا سنضع داخل القائمة منتجات منظمة، وكل منتج سيكون dict.

ما النتيجة التي يجب أن تخرج بها؟

في نهاية الدرس ستفهم هذا الشكل:

product = {
    "name": "Keyboard",
    "price": 100
}

ثم تحفظ المنتج داخل قائمة المنتجات:

products = []
products.append(product)
dict يحفظ البيانات كمفتاح وقيمة.
key اسم المعلومة مثل name أو price.
value القيمة الفعلية مثل Keyboard أو 100.
خريطة درس dict في Python
شرح dict في Python
1

لماذا نحتاج dict؟

في الدروس السابقة استخدمنا قائمتين:

product_names = []
product_prices = []

هذا يعمل، لكنه يجعل اسم المنتج في مكان والسعر في مكان آخر. إذا كبر المشروع، يصبح التنظيم أصعب.

الفرق بين قائمتين منفصلتين وقائمة dict في Python
الفكرة ببساطة: dict يسمح لنا أن نجمع بيانات المنتج الواحد في مكان واحد: الاسم، السعر، وربما لاحقًا الكمية أو الضريبة.
تحقق قبل الانتقال ✅ هل فهمت لماذا وجود الاسم والسعر داخل منتج واحد أفضل من قائمتين منفصلتين؟
2

أنشئ ملف الدرس الثاني والعشرين

افتح مجلد الدورة داخل VS Code:

python_course

ثم أنشئ ملفًا جديدًا باسم:

lesson_22.py

افتح الملف داخل Editor.

توقف لحظة ✅ هل ظهر ملف lesson_22.py داخل Explorer؟ إذا نعم، انتقل للخطوة التالية.
3

جرّب dict بسيط

اكتب:

product = {
    "name": "Keyboard",
    "price": 100
}

print(product)

النتيجة ستكون قريبة من:

{'name': 'Keyboard', 'price': 100}
ماذا حدث؟ أنشأنا dict اسمه product. هذا القاموس يحتوي على مفتاح name ومفتاح price.
سؤال سريع 🧠 هل product هنا قائمة؟ لا. product قاموس dict يمثل منتجًا واحدًا.
4

كيف نقرأ قيمة من dict؟

إذا أردت اسم المنتج:

print(product["name"])

وإذا أردت السعر:

print(product["price"])

الفكرة: نستخدم اسم المفتاح داخل أقواس مربعة.

قاعدة سهلة: مع list نقرأ غالبًا برقم مثل [0]، أما مع dict فنقرأ باسم المفتاح مثل ["name"].
تحقق قبل الانتقال ✅ هل فهمت الفرق بين قراءة list برقم، وقراءة dict باسم مفتاح؟
5

أنشئ قائمة products

بدل قائمتين منفصلتين، سنستخدم قائمة واحدة:

products = []

هذه القائمة ستحفظ المنتجات، وكل منتج سيكون dict.

قائمة تحتوي على قواميس منتجات في Python
سؤال سريع 🧠 ماذا سيكون داخل products؟ ستكون داخلها منتجات، وكل منتج عبارة عن dict.
6

أنشئ منتجًا من إدخال المستخدم

بعد أن يأخذ البرنامج اسم المنتج وسعره، ننشئ dict:

product = {
    "name": product_name,
    "price": price
}

ثم نضيفه إلى قائمة products:

products.append(product)
خريطة كود dict في مشروع المنتجات
ماذا يعني هذا؟ كل مرة يدخل المستخدم منتجًا، نصنع dict جديدًا، ثم نضيفه إلى قائمة المنتجات.
تحقق قبل الانتقال ✅ هل فهمت أن product يتغير في كل دورة، لكن products تحفظ كل المنتجات؟
7

رتّب الكود النهائي على أجزاء

الجزء الأول: تجهيز القائمة والمتغيرات:

products = []
total = 0

name_prompt = "اسم المنتج أو done: "
price_prompt = "سعر المنتج: "

الجزء الثاني: استقبال المنتج والسعر:

while True:
    product_name = input(name_prompt).strip()

    if product_name.lower() == "done":
        break

    price_text = input(price_prompt).strip()
    price = float(price_text)

الجزء الثالث: إنشاء dict وإضافته للقائمة:

    product = {
        "name": product_name,
        "price": price
    }

    products.append(product)
    total = total + price

الجزء الرابع: طباعة التقرير:

print("----- تقرير المنتجات -----")

for product in products:
    name = product["name"]
    price = product["price"]

    print(f"{name}: {price:.2f} ريال")

الجزء الخامس: طباعة العدد والإجمالي:

print(f"عدد المنتجات: {len(products)}")
print(f"الإجمالي: {total:.2f} ريال")
مهم: الأجزاء الخمسة السابقة تُكتب في نفس ملف lesson_22.py بالترتيب.
تحقق قبل الانتقال ✅ هل فهمت أن products قائمة، وكل عنصر داخلها product من نوع dict؟
8

شغّل البرنامج

احفظ الملف:

Ctrl + S

ثم شغله:

python lesson_22.py

وإذا لم يعمل أمر python:

py lesson_22.py
تحقق قبل الانتقال ✅ هل اشتغل البرنامج وبدأ يطلب اسم المنتج؟
9

اختبر البرنامج

جرّب هذه الإدخالات:

اسم المنتج أو done: Keyboard
سعر المنتج: 100
اسم المنتج أو done: Mouse
سعر المنتج: 50
اسم المنتج أو done: done

النتيجة المتوقعة:

----- تقرير المنتجات -----
Keyboard: 100.00 ريال
Mouse: 50.00 ريال
عدد المنتجات: 2
الإجمالي: 150.00 ريال
ماذا تعلمت؟ التقرير خرج كما قبل، لكن البيانات الآن منظمة بشكل أفضل: كل منتج له dict خاص به.
توقف لحظة ✅ هل لاحظت أننا لم نعد نحتاج product_names و product_prices؟
10

تحدي صغير: أضف كمية المنتج

أضف مفتاحًا جديدًا داخل product:

product = {
    "name": product_name,
    "price": price,
    "quantity": 1
}

ثم في التقرير اقرأ الكمية:

quantity = product["quantity"]
هدف التحدي: هنا تظهر قوة dict. نستطيع إضافة معلومة جديدة للمنتج بدون إنشاء قائمة جديدة منفصلة.
تحدي التفكير 🧠 لماذا dict أفضل عندما نريد إضافة quantity؟ لأنه يجعل معلومات المنتج في مكان واحد.

اختبار نهاية الدرس

قبل الانتقال للدرس القادم، تأكد أنك فهمت هذه النقاط:

✅ فهمت أن dict يحفظ البيانات كمفتاح وقيمة.
✅ عرفت الفرق بين key و value.
✅ أنشأت product يحتوي على name و price.
✅ استخدمت products كقائمة منتجات.
✅ أضفت dict إلى list باستخدام append.
✅ قرأت بيانات المنتج باستخدام product["name"].
✅ فهمت لماذا dict أفضل من قائمتين منفصلتين.
✅ أصبحت خطوة أقرب إلى برنامج مشتريات احترافي.
إذا فهمت هذه النقاط: فأنت بدأت تنظم البيانات كما تفعل البرامج الحقيقية: كل شيء مرتبط بالمنتج موجود داخل المنتج نفسه.

خلاصة الدرس

تعلمنا أن dict يسمح لنا بجمع بيانات المنتج في مكان واحد. بدل قائمتين منفصلتين للأسماء والأسعار، أصبح لدينا قائمة products تحتوي على منتجات منظمة.

تذكر القاعدة:

product = {
    "name": product_name,
    "price": price
}

products.append(product)

في الدرس القادم سنبدأ استخدام الدوال functions حتى نفصل أجزاء البرنامج ونجعل الكود أكثر احترافية وقابلية للتطوير.