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

استخدام for: طباعة تقرير المنتجات بطريقة أنظف

في الدرس السابق استخدمنا while و index لطباعة المنتجات من القوائم. في هذا الدرس سنتعلم for، وهي طريقة أنظف وأسهل عندما نريد المرور على عناصر موجودة داخل قائمة.

المستوى: مبتدئ جدًا النتيجة: تقرير منتجات بكود أنظف مدة التطبيق: 30 - 35 دقيقة
طريقة CIT للتعلم الهادئ: لا نريدك أن تحفظ for ككلمة جديدة فقط. افهمها كجملة: مرّ على كل عنصر في هذه القائمة، ونفذ هذا الأمر.
مهم قبل البداية: while ما زالت مهمة. لكن عندما يكون عندنا قائمة جاهزة ونريد المرور عليها، غالبًا for تجعل الكود أقصر وأنظف.

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

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

index = 0

while index < len(product_names):
    name = product_names[index]
    index = index + 1

بهذا الشكل الأنظف:

for index in range(len(product_names)):
    name = product_names[index]
for تستخدم للمرور على عناصر أو أرقام.
range تصنع سلسلة أرقام.
len تعطي عدد عناصر القائمة.
خريطة درس for في Python
الفرق بين while و for في Python
1

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

في الدرس السابق كتبنا كودًا يمر على المنتجات باستخدام while. كان صحيحًا، لكنه يحتاج متغير index وزيادته يدويًا.

مع for، يصبح المرور على العناصر أو الفهارس أكثر اختصارًا.

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

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

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

python_course

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

lesson_21.py

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

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

جرّب for بشكل بسيط

اكتب:

product_names = ["Keyboard", "Mouse", "Screen"]

for name in product_names:
    print(name)

النتيجة:

Keyboard
Mouse
Screen
ماذا حدث؟ for أخذت كل عنصر من product_names، وضعته مؤقتًا داخل name، ثم طبعت name.
سؤال سريع 🧠 هل name قائمة؟ لا. name متغير مؤقت يحمل عنصرًا واحدًا في كل دورة.
4

متى نحتاج index مع for؟

في مشروعنا عندنا قائمتان:

product_names
product_prices

نحتاج نفس رقم الفهرس حتى نأخذ اسم المنتج وسعره معًا:

name = product_names[index]
price = product_prices[index]
لماذا؟ لأن الاسم الأول في product_names يقابله السعر الأول في product_prices، والاسم الثاني يقابله السعر الثاني، وهكذا.
تحقق قبل الانتقال ✅ هل فهمت لماذا نحتاج index عندما نستخدم قائمتين متوازيتين؟
5

افهم range مع len

نكتب:

for index in range(len(product_names)):
شرح range len في Python

إذا كانت القائمة فيها 3 منتجات، فإن:

len(product_names)

تعطي 3، و:

range(3)

تعطينا الأرقام:

0
1
2
سؤال سريع 🧠 إذا كانت القائمة فيها 3 عناصر، لماذا آخر index هو 2؟ لأن العد يبدأ من 0.
6

اكتب تقرير المنتجات باستخدام for

هذا هو شكل التقرير باستخدام for:

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

for index in range(len(product_names)):
    name = product_names[index]
    price = product_prices[index]

    print(f"{index + 1}. {name}: {price:.2f} ريال")
خريطة كود for لتقرير المنتجات
لاحظ الفرق: لم نكتب index = 0، ولم نكتب index = index + 1. for تولت المرور على الأرقام.
تحقق قبل الانتقال ✅ هل فهمت أن for تعطي index في كل دورة بدون زيادته يدويًا؟
7

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

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

product_names = []
product_prices = []
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)

    product_names.append(product_name)
    product_prices.append(price)
    total = total + price

الجزء الثالث: طباعة التقرير باستخدام for:

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

for index in range(len(product_names)):
    name = product_names[index]
    price = product_prices[index]

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

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

print(f"عدد المنتجات: {len(product_names)}")
print(f"الإجمالي: {total:.2f} ريال")
مهم: الأجزاء الأربعة السابقة تُكتب في نفس ملف lesson_21.py بالترتيب.
تحقق قبل الانتقال ✅ هل فهمت أن while لا تزال مسؤولة عن إدخال المنتجات، و for مسؤولة عن طباعة التقرير؟
8

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

احفظ الملف:

Ctrl + S

ثم شغله:

python lesson_21.py

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

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

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

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

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

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

----- تقرير المنتجات -----
1. Keyboard: 100.00 ريال
2. Mouse: 50.00 ريال
3. Screen: 300.00 ريال
عدد المنتجات: 3
الإجمالي: 450.00 ريال
ماذا تعلمت؟ النتيجة تشبه الدرس السابق، لكن كود التقرير أصبح أنظف باستخدام for.
توقف لحظة ✅ هل لاحظت أن التقرير خرج بنفس النتيجة لكن بكود أسهل؟
10

تحدي صغير: أضف الضريبة بعد التقرير

بعد طباعة عدد المنتجات والإجمالي، أضف:

tax = total * 0.15
final_total = total + tax

print(f"الضريبة: {tax:.2f} ريال")
print(f"الإجمالي النهائي: {final_total:.2f} ريال")
هدف التحدي: نريد أن يبقى المشروع يتطور خطوة بخطوة: إدخال منتجات، حفظها في قوائم، طباعتها باستخدام for، ثم حساب الإجمالي النهائي.
تحدي التفكير 🧠 هل تضع الضريبة داخل for؟ لا. الضريبة تُحسب مرة واحدة بعد انتهاء التقرير.

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

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

✅ فهمت الفرق بين while و for.
✅ عرفت أن for مناسبة للمرور على القوائم.
✅ استخدمت range لإنشاء أرقام فهارس.
✅ استخدمت len لمعرفة عدد عناصر القائمة.
✅ فهمت لماذا نحتاج index مع قائمتين.
✅ طبعت تقرير المنتجات باستخدام for.
✅ لم تعد تحتاج index = index + 1 في التقرير.
✅ أصبحت خطوة أقرب إلى برنامج مشتريات منظم.
إذا فهمت هذه النقاط: فأنت بدأت تكتب كودًا أنظف، وهذا فرق مهم بين مجرد كود يعمل وكود يمكن تطويره لاحقًا.

خلاصة الدرس

تعلمنا أن for مناسبة جدًا عندما نريد المرور على عناصر قائمة أو أرقام فهارس. استخدمنا range مع len حتى نمر على أسماء المنتجات وأسعارها بنفس رقم الفهرس.

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

for index in range(len(list_name)):
    استخدم index لقراءة العنصر

في الدرس القادم سنجعل المشروع أكثر احترافية بتجميع بيانات المنتج في شكل أفضل بدل استخدام قائمتين منفصلتين.