محتويات الدورة

بايثون / الأساسيات / الدرس 3

القرارات والحلقات والثوابت المنطقية

عبّر عن القواعد بالفروع وعن العمل المتكرر بالحلقات، ثم تحقق من تقدم كل دورة وحفاظها على خاصية مفيدة.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • اجعل الشروط مفهومة
  • افصل السياسة عن المرور

اجعل الشروط مفهومة

تختار if كتلة عندما يكون شرطها صادقا. تفحص elif شرطا لاحقا إذا لم يصدق السابق، وتغطي else الحالات الباقية. رتب القواعد المتداخلة من الأخص إلى الأعم. تحدد المسافة البادئة الكتلة، ولذلك يؤثر الاصطفاف المرئي في المعنى. اكتب الحالات والحدود بلغة عادية قبل الشفرة. تحتاج قاعدة الشحن المجاني عند حد معين إلى أمثلة تحته وعنده وفوقه، كي يتضح هل المقصود أكبر من الحد أم أكبر منه أو يساويه.

التكرار على القيم

تطلب for قيما متعاقبة من كائن قابل للتكرار. كرر على العناصر مباشرة عندما لا تحتاج إلى الفهرس. تمثل range(start, stop, step) متتالية لا تشمل stop، فتلتقي المجالات المتجاورة دون تداخل. استخدم enumerate عندما تحتاج إلى موقع العنصر وقيمته معا. يمكن أن تحتوي الحلقة شرطا واضحا إذا وصفت ما تستهلكه كل دورة وما تضيفه. تجنب تغيير حجم مجموعة أثناء المرور عليها إلا إذا كانت الخوارزمية مصممة صراحة لهذا السلوك.

التجميع وثابت الحلقة

يلخص المجمّع القيم التي مررنا عليها. هيئه قبل الحلقة وحدّثه لكل عنصر مناسب واقرأه بعد نهايتها. ثابت الحلقة عبارة تبقى صحيحة قبل كل دورة وبعدها؛ هنا يساوي total مجموع القيم غير السالبة التي زارتها الحلقة. تبدأ البادئة الفارغة بمجموع صفر، ويفسر ضم عنصر جديد تحديث المجموع. هذا المنطق أوثق من فحص إجابة نهائية لبيانات واحدة فقط. يجمع المثال التصفية والجمع مع إبقاء القاعدة والحالة المتغيرة واضحتين.

python التجميع وثابت الحلقة — مثال محلول
values = [4, -2, 7, 0]
total = 0
for value in values:
    if value >= 0:
        total += value
print(total)
الناتج المتوقع
11

لا يضاف سالب اثنين. تحافظ إضافة أربعة وسبعة وصفر على الثابت وتنتج 11. لو كانت القائمة فارغة لبقي الصفر الأولي.

الانتهاء والخروج المبكر

تكرر while التنفيذ ما دام الشرط صادقا. حدد كمية تتجه نحو النهاية، وتأكد أن كل مسار يحدثها. تخرج break من أقرب حلقة، وتنتقل continue إلى الدورة التالية. تنفذ else التابعة للحلقة عندما تنتهي دون break؛ ولا تتبع الشرط الموجود داخل الحلقة. يبحث المثال عن أول عدد زوجي ويتوقف عند إيجاده، ويعرض البديل فقط إذا انتهى البحث كله دون نجاح. اختبر مساري النجاح واستنفاد العناصر عند مراجعة هذا النمط.

python الانتهاء والخروج المبكر — مثال محلول
values = [3, 9, 12, 14]
for value in values:
    if value % 2 == 0:
        print("Found", value)
        break
else:
    print("No even value")
الناتج المتوقع
Found 12

العدد 12 أول مطابق، لذلك تمنع break معالجة 14 وتنفيذ كتلة else الخاصة بالحلقة.

افصل السياسة عن المرور

تحدد الحلقة كيفية زيارة القيم، ويحدد الشرط القيم المهمة. حافظ على وضوح الدورين حتى لا يتطلب تغيير القاعدة إعادة كتابة المرور. تضاعف الحلقات المتداخلة العمل؛ فقد تفحص الحلقة الداخلية كل عناصرها لكل عنصر خارجي. عد العمليات تقريبا قبل استخدام النمط مع بيانات كبيرة. فضل حلقة صريحة على تعبير يخفي آثارا جانبية. أثناء التصحيح سجل رقم الدورة والعنصر والمجمّع، ثم أزل التتبع الزائد بعد التحقق من الثابت والحدود. قد ينتهي البرنامج بنجاح ومع ذلك ينفذ قاعدة خاطئة.

الأخطاء الشائعة وإصلاحها

وقوع قيمة الحد في الفرع الخاطئ

لماذا يحدث؟
يستخدم الشرط > رغم أن القاعدة تشمل المساواة.
كيف تصلحه؟
حوّل القاعدة إلى >= وافحص الحالات المجاورة.
كيف تتجنب تكراره؟
اكتب أمثلة أقل من الحد وعنده وفوقه قبل البرمجة.

حلقة while لا تنتهي

لماذا يحدث؟
يترك أحد المسارات متغير التقدم دون تغيير.
كيف تصلحه؟
حدّث التقدم في كل مسار مناسب أو استخدم for محدودة.
كيف تتجنب تكراره؟
حدد مقياسا يتناقص للعمل المتبقي أثناء المراجعة.

المجموع يحتوي العنصر الأخير فقط

لماذا يحدث؟
أعيدت تهيئة المجمّع داخل الحلقة.
كيف تصلحه؟
انقل التهيئة قبل الحلقة وأبق التحديث داخلها.
كيف تتجنب تكراره؟
تتبع المجمّع بعد دورتين متتاليتين.

اختبر فهمك

1. اجمع الأعداد الفردية في range(1, 8) وفسر استبعاد النهاية.

اعرض الحل المشروح

هيئ total بصفر، ومر على range(1, 8)، وأضف n إذا كان n % 2 != 0. تزور الحلقة الأعداد من واحد إلى سبعة، فيكون المجموع 1 + 3 + 5 + 7 = 16. لا تزور ثمانية لأن نهاية range مستبعدة.

2. صف بحثا يعيد قيمة بديلة عند التعامل مع متتالية فارغة.

اعرض الحل المشروح

يمكن استخدام for مع شرط مطابقة وbreak، ثم else للقيمة البديلة. عند غياب العناصر تنتهي الحلقة مباشرة دون break فتنفذ else. وعند وجود مطابق تتخطاها. وإذا كانت كل العناصر غير مطابقة تنفذها بعد فحصها جميعا.

أهم ما تعلمته

  • اختبر الفروع بحالات الحدود.
  • يوضح ثابت الحلقة ما أنجزته حتى اللحظة.
  • يحتاج الانتهاء إلى تقدم واضح في كل مسار.

المراجع الرسمية