تكرار العمليات: اجمع عدة أسعار بدل سعر واحد
في الدرس السابق استخدمنا while لإعادة السؤال حتى يكون الإدخال صحيحًا. الآن سنستخدم while بطريقة أقوى: نجعل البرنامج يستقبل أكثر من سعر، يجمعها، ثم يعرض تقريرًا نهائيًا.
ما النتيجة التي يجب أن تخرج بها؟
في نهاية الدرس ستفهم هذا البرنامج:
total = 0
items_count = 0
price_prompt = "سعر المنتج أو done: "
while True:
price_text = input(price_prompt)
price_text = price_text.strip().lower()
if price_text == "done":
break
price = float(price_text)
total = total + price
items_count = items_count + 1
print(f"عدد المنتجات: {items_count}")
print(f"الإجمالي: {total:.2f} ريال")
هذا البرنامج يستقبل أسعارًا متعددة، وعندما يكتب المستخدم done يطبع عدد المنتجات والإجمالي.
لماذا نحتاج تكرار العمليات؟
في الدروس السابقة تعاملنا غالبًا مع إدخال واحد: عمر واحد، سعر واحد، إجابة واحدة.
لكن البرامج الحقيقية لا تتوقف غالبًا عند عملية واحدة. مثال:
منتج بسعر 50 منتج بسعر 30 منتج بسعر 95.5 ثم اطبع الإجمالي
أنشئ ملف الدرس التاسع عشر
افتح مجلد الدورة داخل VS Code:
python_course
ثم أنشئ ملفًا جديدًا باسم:
lesson_19.py
افتح الملف داخل Editor.
جهّز متغير المجموع والعدد
قبل الحلقة نحتاج متغيرين:
total = 0 items_count = 0
لماذا نبدأ بالصفر؟ لأن البرنامج لم يستقبل أي سعر بعد، ولم يضف أي منتج بعد.
ابدأ حلقة while
الآن نكتب:
price_prompt = "سعر المنتج أو done: "
while True:
price_text = input(price_prompt)
price_text = price_text.strip().lower()
نحن نسأل المستخدم عن السعر، ثم ننظف النص باستخدام strip و lower.
اخرج من الحلقة عند done
بعد تنظيف النص، نفحص:
if price_text == "done":
break
معنى هذا الجزء: إذا كتب المستخدم done، توقف عن طلب الأسعار واخرج من الحلقة.
حوّل السعر واجمعه
إذا لم يكتب المستخدم done، نفترض أنه كتب سعرًا:
price = float(price_text) total = total + price items_count = items_count + 1
هنا يحدث ثلاث أشياء:
float يحول النص إلى رقم total يضيف السعر إلى المجموع items_count يزيد عدد المنتجات واحدًا
اكتب الكود الكامل
الآن اكتب الكود الكامل داخل ملف lesson_19.py:
اكتب أولًا جزء استقبال الأسعار وجمعها:
total = 0
items_count = 0
price_prompt = "سعر المنتج أو done: "
while True:
price_text = input(price_prompt)
price_text = price_text.strip().lower()
if price_text == "done":
break
price = float(price_text)
total = total + price
items_count = items_count + 1
ثم اكتب التقرير خارج الحلقة:
print("----- تقرير المشتريات -----")
print(f"عدد المنتجات: {items_count}")
print(f"الإجمالي: {total:.2f} ريال")
print("----------------------------")
احفظ الملف:
Ctrl + S
ثم شغله:
python lesson_19.py
وإذا لم يعمل أمر python:
py lesson_19.py
اختبر البرنامج بعدة أسعار
جرّب الإدخالات التالية:
50 30 95.5 done
النتيجة المتوقعة:
----- تقرير المشتريات ----- عدد المنتجات: 3 الإجمالي: 175.50 ريال ----------------------------
لماذا نطبع التقرير بعد الحلقة؟
لاحظ أن التقرير موجود خارج while:
print("----- تقرير المشتريات -----")
print(f"عدد المنتجات: {items_count}")
print(f"الإجمالي: {total:.2f} ريال")
السبب: نحن لا نريد طباعة التقرير بعد كل سعر. نريد طباعة التقرير بعد أن ينتهي المستخدم ويكتب done.
تحدي صغير: أضف الضريبة
بعد انتهاء الحلقة، أضف حساب الضريبة:
tax = total * 0.15 final_total = total + tax
ثم اطبع:
print(f"المجموع قبل الضريبة: {total:.2f} ريال")
print(f"الضريبة: {tax:.2f} ريال")
print(f"الإجمالي النهائي: {final_total:.2f} ريال")
اختبار نهاية الدرس
قبل الانتقال للدرس القادم، تأكد أنك فهمت هذه النقاط:
خلاصة الدرس
تعلمنا كيف نستخدم while لتكرار إدخال الأسعار، وكيف نستخدم total لجمع القيم و items_count لعدّ المنتجات. ثم استخدمنا done للخروج من الحلقة وطباعة تقرير نهائي.
تذكر القاعدة:
جهّز المجموع والعدد كرر السؤال داخل while إذا كتب المستخدم done أوقف الحلقة إذا كتب سعرًا أضفه إلى المجموع بعد الحلقة اطبع التقرير
في الدرس القادم سنبدأ استخدام القوائم list حتى لا نحفظ المجموع فقط، بل نحفظ تفاصيل المنتجات نفسها.
💬 التعليقات
لا توجد تعليقات بعد.
🚫 يجب تسجيل الدخول لإضافة تعليق. دخول / تسجيل