من أجل Loops in Python: كل ما تحتاج إلى معرفته

نشرت: 2022-08-18

سيعلمك هذا البرنامج التعليمي كل شيء عن استخدام حلقات for في Python مع أمثلة التعليمات البرمجية.

في البرمجة ، تساعدك الحلقات على تكرار مجموعة معينة من العبارات. ستستخدم حلقات التكرار للحصول على تكرارات محددة عندما:

  • تعلم أنك ستعمل بتسلسل بعدد محدود من العناصر
  • ترى عدد التكرارات مسبقًا

سيعلمك هذا البرنامج التعليمي كل شيء عن العمل مع حلقات for في بايثون. ستبدأ بتعلم بناء الجملة والتكرارات البسيطة باستخدام حلقة for. بعد ذلك ، ستتعرف على معالجة وسيطات سطر الأوامر ، واستخدام عبارات التحكم في الحلقة ، والمزيد.

هيا بنا نبدأ…

بناء جملة Python for Loop

بناء جملة 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

لـ Loop Constructs

عند استخدام حلقة 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-loop

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

لإجراء تكرار عبر قوائم 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
python-for-loop-command-line args

بتجميعها معًا ، يحتوي ملف 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 () في بايثون.