cb
codebamin
الفصل 4 · حلقات التكرار (For Loops)

المسافات البادئة (Indentation) وقواعدها

حلقة المثال التالية:

for character in name: print(character)

تعمل، لكن الشكل المعتاد والصحيح كتابيًا هو:

for character in name: print(character)

وبصورة أدق، يبدأ الكود الذي سيتكرر، ويسمى جسم الحلقة (Body)، في سطر جديد بعد النقطتين :، ويجب أن يكون مزاحًا إلى الداخل (Indented)، أي تسبقه مسافات. الكود التالي بلا مسافة بادئة غير صالح؛ شغّله لترى الخطأ بنفسك:

for character in name: print(character)

هذه المسافات مطلوبة لكي يعرف بايثون أي أسطر تنتمي إلى جسم حلقة for. وتصبح هذه القاعدة شديدة الأهمية عندما تحتوي الحلقة على عدة أسطر، وهو أمر شائع. شغّل مثلًا هذا الكود:

__program_indented__

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

__program_indented__

لأن print('---') غير مزاحة إلى الداخل، فهي ليست جزءًا من جسم الحلقة. وهذا يعني أنها تُنفذ مرة واحدة فقط بعد انتهاء الحلقة كلها. كلا البرنامجين صالح، لكن كل واحد منهما يفعل شيئًا مختلفًا.

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

for character in name: print(character) print('---')

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

solution.py
1
2
3
4
5
6
7
8
9
10
الطرفية (shell)
>>>