من أجل Loops in Python: كل ما تحتاج إلى معرفته
نشرت: 2022-08-18سيعلمك هذا البرنامج التعليمي كل شيء عن استخدام حلقات for في Python مع أمثلة التعليمات البرمجية.
في البرمجة ، تساعدك الحلقات على تكرار مجموعة معينة من العبارات. ستستخدم حلقات التكرار للحصول على تكرارات محددة عندما:
- تعلم أنك ستعمل بتسلسل بعدد محدود من العناصر
- ترى عدد التكرارات مسبقًا
سيعلمك هذا البرنامج التعليمي كل شيء عن العمل مع حلقات for في بايثون. ستبدأ بتعلم بناء الجملة والتكرارات البسيطة باستخدام حلقة for. بعد ذلك ، ستتعرف على معالجة وسيطات سطر الأوامر ، واستخدام عبارات التحكم في الحلقة ، والمزيد.
هيا بنا نبدأ…
بناء جملة Python for Loop

الصيغة العامة لاستخدام حلقة for في بايثون هي كما يلي:
for item in iterable: # do something on item statement_1 statement_2 . . . statement_n
في النحو أعلاه:
- العنصر هو متغير التكرار الحلقي.
- تشير كلمة iterable إلى أي لغة Python قابلة للتكرار مثل القوائم ، و tuples ، و strings.
- تشير عبارة_1 من خلال statement_n إلى العبارات الموجودة في جسم الحلقة.
ملاحظة : تأكد من إضافة علامة النقطتين ( :
بعد اسم التكرار وقم بوضع مسافة بادئة لجميع العبارات في نص الحلقة بأربع مسافات.
مشترك لـ Loop Constructs في Python

عند استخدام حلقة for :
- يمكنك الوصول إلى العناصر مباشرة باستخدام الصيغة التي تمت مناقشتها في القسم السابق.
- يمكنك استخدام حلقة for جنبًا إلى جنب مع وظائف Python المضمنة مثل
range()
enumerate()
.
سنقوم بتغطيتها في هذا القسم.
استخدام لـ Loop للوصول إلى العناصر
لتحسين إمكانية القراءة ، يجب عليك اختيار متغير حلقي يشير إلى ما تحتويه القائمة. على سبيل المثال ، في المثال أدناه ، nums
عبارة عن قائمة من الأرقام التي نستخدمها num
كمتغير حلقي. لاحظ كيفية استخدام for num in nums:
فهي بديهية وسهلة القراءة.
nums = [4,5,9,1,3] for num in nums: print(num) # Output 4 5 9 1 3
بإضافة بعض الأمثلة الأخرى ، يمكنك استخدامها for fruit in fruits:
for student in students:
عند استعراض fruits
وقائمة students
، على التوالي.
استخدام لـ Loop مع وظيفة range ()
عندما تريد الوصول إلى عنصر قائمة من خلال الفهرس الخاص به ، يمكنك استخدام وظيفة range()
.
في Python ، يُرجع
range(start, stop, step)
كائن النطاق ، والذي يمكنك إجراء حلقة من خلاله للحصول على المؤشرات:start
،start + step
، وما إلى ذلك ، حتى ولكن بدون تضمينstop
.
for i in range(len(nums)): print(nums[i]) # Output 4 5 9 1 3
يمكنك أيضًا استخدام الدالة range()
لإنشاء سلسلة من الأرقام للتكرار خلالها. في المثال أدناه ، قمنا بتعيين معلمة step
الاختيارية على 2. لذلك نحصل على الأرقام من 10 حتى ولكن لا تشمل 20 ، في الخطوات 2.
for i in range(10,20,2): print(i) # Output 10 12 14 16 18
استخدام لـ Loop مع وظيفة التعداد ()
عندما تريد إجراء حلقة متكررة للوصول إلى العناصر ومؤشراتها في وقت واحد ، يمكنك استخدام وظيفة enumerate ().
هنا مثال.
for idx, num in enumerate(nums): print(f"{idx}:{num}") # Output 0:4 1:5 2:9 3:1 4:3

كيف تقرأ العناصر من القوائم التي تستخدم للحلقة في بايثون
لإجراء تكرار عبر قوائم Python باستخدام حلقة for ، يمكنك استخدام الصيغة العامة من القسم السابق.
في المثال أدناه ، nums
قابلة للتكرار ، و num هو متغير التكرار الحلقي.
nums = [4,5,9,1,3] for num in nums: print(f"{num} times 3 is {num*3}") # action on each num # Output 4 times 3 is 12 5 times 3 is 15 9 times 3 is 27 1 times 3 is 3 3 times 3 is 9
كيفية التكرار عبر السلاسل باستخدام التكرار الحلقي في بايثون
سلاسل Python متكررة ويمكنك إجراء الحلقات والفهرسة والتقطيع والمزيد.
ملاحظة : لا تحتوي Python على نوع بيانات حرف مضمّن. لذا يمكنك التعامل مع حرف كسلسلة طولها واحد.
my_string = "Code" for char in my_string: print(char) # Output C o d e
كيفية التكرار عبر المصفوفات باستخدام التكرار الحلقي في بايثون

يمكنك تنفيذ حلقة عبر المصفوفات باستخدام الحلقات loops و nest for loops.
في مقتطف الشفرة أدناه ، تعتبر array1 قائمة متداخلة تحتوي على قوائم أصغر كعناصرها. لذا فإن الحلقات خلال المصفوفة 1 تعطي كل صف ، كما هو موضح أدناه.
array1 = [[2,3],[7,8]] for row in array1: print(row) # Output [2, 3] [7, 8]
للوصول إلى العناصر الفردية في كل صف ، يمكنك استخدام حلقة for
أخرى.
array1 = [[2,3],[7,8]] for row in array1: for elt in row: print(elt)
في خلية الكود أعلاه:
- تساعدك حلقة for الخارجية على فهرسة الصفوف.
- تمكنك حلقة for الداخلية من الاستفادة من العناصر الموجودة في كل صف.
ها هو الناتج المقابل.
Output 2 3 7 8
كيفية قراءة وسيطات سطر الأوامر باستخدام التكرار الحلقي

بصفتك مطورًا ، يجب أن تكون مرتاحًا لتشغيل برامج Python النصية من سطر الأوامر واستخدام وسيطات سطر الأوامر للتفاعل مع البرنامج النصي الخاص بك.
يمكنك استخدام وحدات Python المدمجة مثل sys و argparse لتحليل وقراءة وسيطات سطر الأوامر.
في هذا القسم ، سوف نستعرض كيفية استخدام وحدة sys
واستخدام حلقة for
- للتكرار خلال قائمة وسيطات سطر الأوامر.
في الوحدة النمطية sys ، sys.argv
هي قائمة وسيطات سطر الأوامر التي تمررها. لذا يمكنك تنفيذ حلقة عبر sys.argv
بالطريقة التي تتكرر بها عبر أي قائمة Python.
# main.py import sys for arg in sys.argv: print(arg)
يمكنك الآن تشغيل البرنامج من سطر الأوامر ، كما هو موضح أدناه.
$ python main.py Hello Python3 main.py Hello Python3
افتراضيًا ، يكون اسم الوحدة النمطية هو الوسيطة الأولى ويكون عند الفهرس صفر في sys.argv
.
إذا كنت تريد الوصول إلى الفهارس والوسيطات المقابلة ، يمكنك استخدام الدالة range()
.
# main.py import sys for i in range(len(sys.argv)): print(f"arg{i} is {sys.argv[i]}")
️ بعد ذلك ، أعد تشغيل main.py.
$ python main.py Hello Python3 arg0 is main.py arg1 is Hello arg2 is Python3
افترض أنك ترغب في تحليل ومعالجة الوسائط بخلاف اسم الوحدة النمطية. يمكنك ضبط قيمة البداية على 1 ، كما في خلية الكود أدناه.

# main.py import sys for i in range(1,len(sys.argv)): print(f"arg{i} is {sys.argv[i]}")
$ python main.py Hello Python3 arg1 is Hello arg2 is Python3

بتجميعها معًا ، يحتوي ملف main.py على الكود التالي.
# main.py import sys print("\nPrinting all command-line arguments...") for arg in sys.argv: print(arg) print("\nPrinting all command-line arguments with index...") for i in range(len(sys.argv)): print(f"arg{i} is {sys.argv[i]}") print("\nPrinting command-line arguments except arg0: module_name...") for i in range(1,len(sys.argv)): print(f"arg{i} is {sys.argv[i]}")
هنا هو الإخراج عند تشغيل الوحدة.
$ python main.py Hello Python3 Printing all command-line arguments... main.py Hello Python3 Printing all command-line arguments with index... arg0 is main.py arg1 is Hello arg2 is Python3 Printing command-line arguments except arg0: module_name... arg1 is Hello arg2 is Python3
كيفية استخدام استراحة في الداخل للحلقة

مثل لغات البرمجة الأخرى ، تدعم Python أيضًا استخدام عبارات التحكم في الحلقة break
and continue
. يمكن أن تساعد هذه العبارات في تغيير تدفق التحكم في الحلقات ، بناءً على بعض الشروط. دعونا نرى كيفية استخدامها داخل حلقة for.
يمكن استخدام break
العبارة لكسر حلقة عندما يكون شرط معين True
.
نريد كتابة برنامج للقيام بما يلي:
- إصلاح
k
، عدد المدخلات. - استخدم حلقة
for
للقراءة في مدخلات المستخدم — رقم واحد في كل مرة ، ولجمع الأرقام غير السالبة (أكبر من أو تساوي الصفر). - يجب أن تستمر هذه العملية طالما أن المستخدم يقوم بإدخال أرقام غير سالبة.
- عندما يُدخل المستخدم رقمًا سالبًا ، اخرج من الحلقة واطبع المجموع.
هذا هو الكود الذي يؤدي المهمة أعلاه.
k= 5 sum = 0 for i in range(k): num = int(input("\nEnter a number: ")) if num<0: break # exit loop when num < 0 sum += num print(sum)
إذا أدخل المستخدم رقمًا أقل من الصفر ، فإن عنصر التحكم ينفصل عن حلقة for إلى العبارة الأولى بعد الحلقة.
Enter a number: 2 Enter a number: 3 Enter a number: 5 Enter a number: -1 10
كيفية استخدام "استمرار بيان الداخل للحلقة"
يمكن استخدام عبارة continue
لتخطي بعض التكرارات اعتمادًا على حالة معينة.
دعنا نستخدم نفس الأمثلة في القسم السابق.
- قراءة في إدخال المستخدم وحساب مجموع الأرقام غير السالبة.
- إذا أدخل المستخدم رقمًا سالبًا ، فتخط هذا التكرار وانتقل إلى التكرار التالي ، واقرأ الرقم التالي.
k = 5 sum = 0 for i in range(k): num = int(input("\nEnter a number: ")) if num<0: continue sum += num print(sum)
هنا عينة من المخرجات.
Enter a number: 2 Enter a number: 3 Enter a number: 5 Enter a number: -1 Enter a number: 3 13
الرقم الرابع هو -1 ، وهو سلبي. ومع ذلك ، هذه المرة تستمر الحلقة for حتى نصل إلى العدد المحدد من المدخلات ، ونتجاهل المدخلات السلبية. بشكل أساسي ، تقوم بإرجاع مجموع جميع الأرقام غير السالبة من أرقام الإدخال k .
هل يمكنك الجري في حلقة لانهائية في بايثون؟

في جميع الأمثلة وحالات الاستخدام التي ناقشناها حتى الآن ، لم نواجه مشكلة حلقة for لانهائية. ولكن هل يمكننا الحصول على حلقة for لانهائية في بايثون؟
ضع في اعتبارك الوظيفة التالية double()
.
def double(x = 1): return x*2
- عند استدعاء الوظيفة
double()
دون تحديد قيمةx
، يتم استخدام القيمة الافتراضية 1. - عندما تحدد قيمة لـ
x
في استدعاء الوظيفة ، يتم استخدام هذه القيمة.
double() # Returns: 2 double(20) # Returns: 40
في Python ، ترجع الدالة iter () كائنًا مكررًا. يمكنك استخدام next(iter-obj)
للتكرار خلال التسلسل والوصول إلى العناصر اللاحقة.
- اعتبر كائنًا قابلًا للاستدعاء وقيمة ، أيها الحارس .
- يمكن استخدام
iter(callable-object, sentinel)
لإجراء التكرار حتى تكون القيمةcallable-object
مساويةsentinel
.
هل ترى لماذا يمكننا الحصول على حلقة for لانهائية في هذه الحالة؟

حسنًا ، لديك callable-object
وقيمة sentinel
. إذا كانت القيمة المعادة من الاستدعاء لا تساوي أبدًا الحارس ، فستستمر الحلقة إلى الأبد!
دعنا نستخدم الوظيفة المذكورة أعلاه double
باعتبارها قابلة للاستدعاء ، ونضبط قيمة الحارس على 0.
ملاحظة : أذكر اسم الوظيفة double
، وليس استدعاء الوظيفة double()
.
نظرًا لأن قيمة الإرجاع من الدالة double
هي دائمًا 2 ولا تساوي أبدًا 0 ، فلدينا حلقة لا نهائية!
️ حاول تشغيل خلية التعليمات البرمجية التالية. إنها حلقة for لانهائية ، وسيتعين عليك فرض إيقاف البرنامج.
for _ in iter(double,0): print("Running...")

Python For Loops: أسئلة التدريب
# 1 . استخدم حلقة for لطباعة جميع الأرقام الزوجية في النطاق من 0 إلى 20.
تلميح : استخدم الدالة range()
مع قيمة step
الصحيحة.
# 2 . اطبع جميع الأرقام الزوجية من 20 إلى 0.
تلميح : استخدم القيمة السالبة لمعلمة step
في دالة range()
.
# 3 . قم بإنشاء مصفوفة NumPy ثلاثية الأبعاد.
تلميح : استخدم حلقة for وحلقات for المتداخلة حسب الحاجة للوصول إلى الصفوف والإدخالات الفردية في المصفوفة.
تغليف
فيما يلي ملخص لما تعلمته في هذا البرنامج التعليمي.
- بناء الجملة لاستخدام Python for loop جنبًا إلى جنب مع وظائف range () والعدد ()
- استخدام حلقات for للتنقل بين القوائم والمصفوفات والسلاسل والقراءة في وسيطات سطر الأوامر
- استخدام عبارات التحكم في الحلقة: كسر للخروج من الحلقة ومتابعة العبارة لتخطي تكرارات معينة - بناءً على الشروط - داخل حلقات for
- فهم احتمالية وجود حلقات for لانهائية في بايثون
بعد ذلك ، تعرف على كيفية استخدام طريقة split () في بايثون.