حلقة for في Python

الحلقة التكرارية في Python هي وظيفة تكرارية. إذا كان لديك كائن تسلسلي مثل list، يمكنك استخدام الحلقة التكرارية لتكرار العناصر الموجودة داخل القائمة.

وظيفة الحلقة التكرارية لا تختلف كثيرًا عن ما تراه في لغات برمجة أخرى متعددة.

في هذه المقالة، سنكتشف حلقة التكرار في Python بالتفصيل ونتعلم كيفية تكرار تسلسلات مختلفة بما في ذلك القوائم، والتوابع، والمزيد. بالإضافة إلى ذلك، سنتعلم كيفية التحكم في تدفق الحلقة باستخدام بيانات الاستراحة والمتابعة.

متى نستخدم حلقة التكرار

في أي وقت تحتاج فيه إلى تكرار كتلة من الشفرة عددًا ثابتًا من المرات. إذا كنت لا تعرف عدد المرات التي يجب أن يتم التكرار فيها، استخدم بيان “حلقة while” بدلاً من ذلك.

صيغة حلقة التكرار في Python

صيغة حلقة التكرار الأساسية في Python تبدو مشابهة إلى حد ما لتلك المذكورة أدناه.

for itarator_variable in sequence_name:
	Statements
	. . .
	Statements

بيثون لحلقة الـ for بالتفصيل

  • الكلمة الأولى في البيان تبدأ بالكلمة المفتاح “for” التي تدل على بداية حلقة الـ for.
  • ثم لدينا متغير العارض الذي يكرر عبر التسلسل ويمكن استخدامه داخل الحلقة لأداء وظائف مختلفة
  • التالي هو كلمة “in” في بيثون التي تخبر متغير العارض بتكرار العناصر داخل التسلسل
  • وأخيرًا، لدينا متغير التسلسل الذي يمكن أن يكون إما قائمة، أو tuple، أو أي نوع آخر من العارض.
  • جزء البيانات في الحلقة هو المكان الذي يمكنك فيه التلاعب بمتغير العارض وأداء وظائف مختلفة

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

إليك كيف يمكن أن تعمل ذلك بالنسبة لك.

word="anaconda"
for letter in word:
	print (letter)

الناتج:

a
n
a
c
o
n
d
a

السبب في أن هذا الحلقة يعمل هو أن Python يعتبر “سلسلة نصية” كتسلسل من الأحرف بدلاً من النظر إلى السلسلة ككل.

استخدام حلقة for للتكرار على قائمة Python أو tuple

القوائم و التوابع هي أشياء قابلة للتكرار. دعونا نلقي نظرة على كيفية تكرار العناصر ضمن هذه الكائنات الآن.

words= ["Apple", "Banana", "Car", "Dolphin" ]
for word in words:
	print (word)

الناتج:

Apple
Banana
Car
Dolphin

الآن، دعونا نتقدم ونعمل على تكرار عناصر tuple هنا.

nums = (1, 2, 3, 4)

sum_nums = 0

for num in nums:
    sum_nums = sum_nums + num

print(f'Sum of numbers is {sum_nums}')

# الناتج
# مجموع الأرقام هو 10

تضمين حلقات for في Python

عندما يكون لدينا حلقة for داخل حلقة for أخرى، يُطلق عليها حلقة for متداخلة. يوجد تطبيقات متعددة لحلقة for متداخلة.

Considere el ejemplo de la lista anterior. El bucle for imprime palabras individuales de la lista. Pero, ¿qué pasa si queremos imprimir los caracteres individuales de cada una de las palabras dentro de la lista en su lugar?

Aquí es donde funciona mejor un bucle for anidado. El primer bucle (bucle principal) recorrerá las palabras una por una. El segundo bucle (bucle secundario) recorrerá los caracteres de cada una de las palabras.

words= ["Apple", "Banana", "Car", "Dolphin" ]
for word in words:
        # Este bucle está obteniendo la palabra de la lista
        print ("The following lines will print each letters of "+word)
        for letter in word:
                # Este bucle está obteniendo la letra de la palabra
                print (letter)
        print("") # Esta impresión se utiliza para imprimir una línea en blanco

Salida

A nested loop is structurally similar to nested if statements

Bucle for de Python con la función range()

El rango de Python es una de las funciones incorporadas. Cuando desea que el bucle for se ejecute durante un número específico de veces, o necesita especificar un rango de objetos para imprimir, la función de rango funciona realmente bien.

Al trabajar con range(), puede pasar entre 1 y 3 argumentos enteros a él:

  • start establece el valor entero en el que comienza la secuencia, si esto no se incluye, entonces start comienza en 0
  • stop siempre es necesario y es el entero que se cuenta pero no se incluye
  • الخطوة تحدد كمية الزيادة (أو النقص في حالة الأرقام السالبة) في التكرار التالي، إذا تم حذف ذلك فإن الخطوة سيكون افتراضياً 1

افترض الأمر في المثال التالي حيث أريد طباعة الأرقام 1 و 2 و 3:

for x in range(3):
    print("Printing:", x)
	
# الناتج

# الطباعة: 0
# الطباعة: 1
# الطباعة: 2

تأخذ دالة النطاق أيضًا معلمة أخرى بجانب البداية والتوقف. وهذه هي معلمة الخطوة. يخبرنا ذلك عن كم عدد من الأرقام يتم تخطيها بين كل عد.

في المثال أدناه، لقد استخدمت الرقم 3 كمعلمة خطوة ويمكنك أن ترى الأرقام المخرجة هي الرقم السابق + 3.

for n in range(1, 10, 3):
    print("Printing with step:", n)
	
# الناتج

# الطباعة بخطوة: 1
# الطباعة بخطوة: 4
# الطباعة بخطوة: 7

يمكننا أيضًا استخدام قيمة سلبية لمعامل الخطوة للتكرار بشكل عكسي، ولكن علينا أن نعدل معاملات البداية و التوقف وفقًا لذلك:

for i in range(100,0,-10):
   print(i)

هنا، 100 هو قيمة البداية، 0 هو قيمة التوقف، و -10 هو النطاق، لذا يبدأ الحلقة عند 100 وينتهي عند 0، متناقصًا بمقدار 10 مع كل تكرار. وهذا يحدث في الناتج:

Output
100 90 80 70 60 50 40 30 20 10

عندما تبرمج بلغة Python، غالبًا ما تستخدم حلقات الـ for متتالية من نوع range() كمعلماتها للتكرار.

بيان الكسر مع حلقة for

يُستخدم بيان الكسر للخروج من حلقة الـ for مبكرًا. يُستخدم لكسر حلقة الـ for عندما تُلبَّى شرط معين.

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

في هذه الحالة، سنستخدم شرط if else في Python بجانب حلقتنا for.

nums = [1, 2, 3, 4, 5, 6]

n = 2

found = False
for num in nums:
    if n == num:
        found = True
        break

print(f'List contains {n}: {found}')

# النتيجة
# القائمة تحتوي على 2: صحيح

بيان الاستمرار مع حلقة for

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

لنفترض أن لدينا قائمة من الأرقام ونريد طباعة مجموع الأرقام الإيجابية. يمكننا استخدام تعليمات continue لتجاوز الحلقة التكرارية للأرقام السالبة.

nums = [1, 2, -3, 4, -5, 6]

sum_positives = 0

for num in nums:
    if num < 0:
        continue
    sum_positives += num

print(f'Sum of Positive Numbers: {sum_positives}')

الحلقة التكرارية في بايثون مع كتلة else

يمكننا استخدام كتلة else مع الحلقة التكرارية في بايثون. يتم تنفيذ كتلة else فقط عندما لا يتم إنهاء الحلقة التكرارية بواسطة تعليمة كسر.

لنفترض أن لدينا وظيفة لطباعة مجموع الأرقام فقط إذا كانت جميع الأرقام زوجية.

يمكننا استخدام تعليمة الكسر لإنهاء الحلقة التكرارية إذا كان العدد فرديًا. يمكننا طباعة المجموع في الجزء الآخر بحيث لا يتم طباعته إلا عند تنفيذ الحلقة التكرارية بشكل طبيعي.

def print_sum_even_nums(even_nums):
    total = 0

    for x in even_nums:
        if x % 2 != 0:
            break

        total += x
    else:
        print("For loop executed normally")
        print(f'Sum of numbers {total}')


# سيتم طباعة المجموع
print_sum_even_nums([2, 4, 6, 8])

# لن يتم طباعة المجموع بسبب وجود عدد فردي في التسلسل
print_sum_even_nums([2, 4, 5, 8])

# الإخراج

# تنفيذ الحلقة التكرارية بشكل طبيعي
# مجموع الأرقام 20

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

القوائم وغيرها من أنواع تسلسل البيانات يمكن استخدامها أيضًا كمعلمات تكرار في حلقات for. بدلاً من التكرار عبر range()، يمكنك تعريف قائمة والتكرار من خلال تلك القائمة.

سنخصص قائمة لمتغير، ثم نكرر من خلال القائمة:

sharks = ['hammerhead', 'great white', 'dogfish', 'frilled', 'bullhead', 'requiem']

for shark in sharks:
   print(shark)

في هذه الحالة، نقوم بطباعة كل عنصر في القائمة. على الرغم من استخدام المتغير shark، يمكننا استدعاء المتغير باسم متغير آخر اسم متغير صالح وسنحصل على نفس الناتج:

Output
hammerhead great white dogfish frilled bullhead requiem

الناتج أعلاه يظهر أن الحلقة for تكررت من خلال القائمة، وطبعت كل عنصر من القائمة في كل سطر.

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

sharks = ['hammerhead', 'great white', 'dogfish', 'frilled', 'bullhead', 'requiem']

for item in range(len(sharks)):
   sharks.append('shark')

print(sharks)
Output
['hammerhead', 'great white', 'dogfish', 'frilled', 'bullhead', 'requiem', 'shark', 'shark', 'shark', 'shark', 'shark', 'shark']

هنا، قمنا بإضافة سلسلة نصية بديلة من 'shark' لكل عنصر من طول قائمة sharks.

يمكنك أيضًا استخدام حلقة for لإنشاء قائمة من البداية:

integers = []

for i in range(10):
   integers.append(i)

print(integers)

في هذا المثال، تم تهيئة قائمة integers فارغة، ولكن حلقة for تملأ القائمة كما يلي:

Output
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

بالمثل، يمكننا تكرار السلاسل:

sammy = 'Sammy'

for letter in sammy:
   print(letter)
Output
S a m m y

يتم تكرار الأزواج بنفس التنسيق المستخدم في تكرار القوائم أو السلاسل أعلاه.

عند تكرار القاموس، من المهم أن نتذكر هيكل المفتاح: القيمة لضمان استدعاء العنصر الصحيح من القاموس. فيما يلي مثال يستدعي كل من المفتاح والقيمة:

sammy_shark = {'name': 'Sammy', 'animal': 'shark', 'color': 'blue', 'location': 'ocean'}

for key in sammy_shark:
   print(key + ': ' + sammy_shark[key])
Output
name: Sammy animal: shark location: ocean color: blue

عند استخدام القواميس مع حلقات for، يتوافق المتغير المكرر مع مفاتيح القاموس، وdictionary_variable[iterating_variable] يتوافق مع القيم. في الحالة أعلاه، تم استخدام المتغير المكرر key للإشارة إلى المفتاح، واستخدم sammy_shark[key] للإشارة إلى القيم.

غالبًا ما يتم استخدام الحلقات لتكرار وتلاعب أنواع البيانات التسلسلية.

الاستنتاج

الحلقة for في Python مشابهة للغاية لغات البرمجة الأخرى. يمكننا استخدام تعليمات الكسر والاستمرار مع حلقة for لتغيير التنفيذ. ومع ذلك، في Python، يمكننا أيضًا وجود كتلة else اختيارية في حلقة for.

I hope you have gained some interesting ideas from the tutorial above. If you have any questions, let us know in the comments below.

من هنا، يمكنك الاستمرار في تعلم الحلقات عن طريق قراءة البرامج التعليمية حول حلقات الـwhile وتعليمات الاستراحة، الاستمرار، والمرور.

للعمل مع حلقات for في المشاريع، تابع البرامج التعليمية التالية:

Source:
https://www.digitalocean.com/community/tutorials/how-to-construct-for-loops-in-python-3