تدفق التحكم في بايثون

تدفق التحكم في بايثون

توضح هذه المقالة تدفق التحكم في بايثون۔

YouTube Video

عبارة if في بايثون

عبارة if في بايثون هي صيغة للتفرع الشرطي۔ تُستخدم لتنفيذ كتلة من الأكواد إذا تحقق شرط معين وأعطى القيمة True (صحيح)۔

الصياغة الأساسية

عبارة if في بايثون تتبع بشكل أساسي البنية التالية۔

1x = 10
2
3if x > 5: # Check if the condition(x > 5) is True
4    # If the condition is True, execute this code block
5    print("x is greater than 5")

في هذا المثال، سيتم طباعة "x is greater than 5" إذا كانت قيمة المتغير x أكبر من 5۔

عبارة else

استخدام else بعد عبارة if يتيح لك تحديد الأكواد التي سيتم تنفيذها عندما يكون الشرط غير صحيح۔

1x = 3
2
3if x > 5:
4    print("x is greater than 5")
5else:
6    print("x is less than or equal to 5")

في هذا المثال، ستكون النتيجة "x is less than or equal to 5"۔

عبارة elif

إذا كنت بحاجة للتحقق من شروط متعددة، يمكنك استخدام elif، التي تعني "else if"۔

1x = 5
2
3if x > 5:
4    print("x is greater than 5")
5elif x == 5:
6    print("x is equal to 5")
7else:
8    print("x is less than 5")

في هذا المثال، يتم طباعة "x is equal to 5"۔

ملاحظات

  • يجب وضع نقطة مزدوجة (:) بعد if، أو elif، أو else۔
  • يجب أن تكون كتلة الأكواد التي يتم تنفيذها عند تحقق الشرط متداخلة (indented)۔ في بايثون، يكون المسافة البادئة القياسية عادة 4 مسافات، لكن يمكن استخدام أعداد أخرى من المسافات طالما أنك تلتزم بالاتساق۔
  • يمكنك استخدام أي تعبير يعيد قيمة منطقية (boolean) كشرط۔ هذا يعني أنه يمكنك استخدام تعبيرات شرطية مدمجة مع عوامل مقارنة أو عوامل منطقية۔

إتقان عبارة if في بايثون يتيح لك التحكم بمرونة في تدفق تنفيذ البرنامج۔

التفرع الشرطي المتعدد في بايثون

هناك عدة طرق لتنفيذ وظيفة تشبه switch في بايثون، على غرار ما هو موجود في لغات البرمجة الأخرى۔ في بايثون، من الشائع استخدام عبارات if-elif-else أو القواميس (dictionaries) لإنشاء بنى مشابهة لعبارة switch۔

الطريقة 1: بيان if-elif-else

أبسط طريقة هي استخدام بيان if-elif-else للتفرع الشرطي۔

 1def switch_example(value):
 2    if value == 1:
 3        return "Value is one"
 4    elif value == 2:
 5        return "Value is two"
 6    elif value == 3:
 7        return "Value is three"
 8    else:
 9        return "Unknown value"
10
11print(switch_example(1))  # Output: Value is one
12print(switch_example(4))  # Output: Unknown value

الطريقة 2: استخدام القواميس

عن طريق ربط الدوال أو القيم بقاموس، يمكن إنشاء بنية تشبه بيان switch۔ هذا مفيد عندما ترغب في تنفيذ عمليات مختلفة لقيم محددة۔

 1def case_one():
 2    return "Value is one"
 3
 4def case_two():
 5    return "Value is two"
 6
 7def case_default():
 8    return "Unknown value"
 9
10def switch_example(value):
11    switch_dict = {
12        1: case_one,
13        2: case_two
14    }
15
16    # Use get() method to retrieve the corresponding function from the dictionary
17    # If the value is not found in the dictionary, use case_default as a fallback
18    return switch_dict.get(value, case_default)()
19
20print(switch_example(1))  # Output: Value is one
21print(switch_example(3))  # Output: Unknown value

الطريقة 3: بيان match (بايثون 3.10 والإصدارات الأحدث)

تم تقديم بيان match في بايثون 3.10۔ إنها صياغة مطابقة الأنماط التي توفر وظيفة مشابهة لبيان switch۔

 1def switch_example(value):
 2    match value:
 3        case 1:
 4            return "Value is one"
 5        case 2:
 6            return "Value is two"
 7        case 3:
 8            return "Value is three"
 9        case _:
10            return "Unknown value"
11
12print(switch_example(1))  # Output: Value is one
13print(switch_example(4))  # Output: Unknown value

الملخص

  • بيان if-elif-else: بسيط وقابل للتكيف مع العديد من الحالات۔
  • القواميس: استخدم ربط الدوال أو القيم لتمكين عملية تفرع فعالة۔
  • بيان match: يسمح بتفرع أكثر وضوحًا في بايثون 3.10 والإصدارات الأحدث۔ الأقرب إلى بيان switch۔

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

يتم استخدام عبارة for في بايثون للتكرار عبر كل عنصر من كائن قابل للتكرار مثل القائمة، أو السلسلة النصية، أو القاموس۔ الصيغة الأساسية لبيان for هي كالتالي:۔

1# Loop through each item in the iterable
2for variable in iterable:
3    # Execute this block of code for each item in the iterable
4    code_to_execute

فيما يلي بعض الأمثلة المحددة:۔

مثال باستخدام قائمة

1fruits = ["apple", "banana", "cherry"]
2for fruit in fruits:
3    print(fruit)

يستدعي هذا الكود دالة print لكل عنصر في القائمة fruits، مما ينتج اسم كل فاكهة۔

مثال باستخدام range()

تُنتج دالة range() الأعداد الصحيحة داخل نطاق محدد، مما يجعلها مفيدة للتكرارات الرقمية۔

1for i in range(5):
2    print(i)

range(5) تُنتج الأعداد الصحيحة من 0 إلى 4۔ في هذه الحالة، سيتم إخراج 0, 1, 2, 3, 4 بالتتابع۔

مثال باستخدام قاموس

في حالة القواميس، يتم التكرار على المفاتيح افتراضيًا، ولكن يمكنك أيضًا استخراج أزواج المفتاح والقيمة۔

1person = {"name": "Alice", "age": 25}
2for key in person:
3    print(key, person[key])

أو يمكنك استخدام طريقة items() لاسترجاع المفاتيح والقيم في نفس الوقت.۔

1person = {"name": "Alice", "age": 25}
2for key, value in person.items():
3    print(key, value)

الحلقة المتداخلة for

من الممكن أيضًا تداخل حلقات for لتنفيذ عمليات تكرار معقدة.۔

1matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
2for row in matrix:
3    for num in row:
4        print(num)

يقوم هذا الكود بالتكرار عبر كل صف في القائمة matrix ويعرض الأرقام الموجودة في كل صف على التوالي.۔

continue لتخطي تكرار وbreak لإنهاء الحلقة.

استخدام continue داخل حلقة for سيتخطى التكرار الحالي وينتقل إلى التالي.۔ بالإضافة إلى ذلك، فإن استخدام break سينهي الحلقة تمامًا.۔

1for i in range(10):
2    if i == 5:
3        continue
4    if i == 8:
5        break
6    print(i)

في هذا المثال، الحلقة تتخطى التكرار عندما تكون قيمة i تساوي 5 وتنتهي عندما تكون i تساوي 8.۔ لذلك، ستكون النتيجة 0, 1, 2, 3, 4, 6, 7

حلقة for في بايثون مرنة للغاية ويمكن استخدامها في مجموعة متنوعة من السيناريوهات۔ اعتمادًا على نوع المعالجة التكرارية التي ترغب في تنفيذها، يمكن استخدامها جنبًا إلى جنب مع القوائم والقواميس والنصوص وسلسلة range()۔

الحلقة while في بايثون

في بايثون، تعتبر الحلقة while هي بنية تحكم تُستخدم لتنفيذ الكود داخل الكتلة بشكل متكرر طالما أن الشرط يبقى True.۔ الصيغة الأساسية لحلقة while هي كالتالي:۔

1while condition:
2    # This block of code will be executed repeatedly as long as the condition is true
3    statement1
4    statement2
5    ...

مثال:

في المثال التالي، يتم استخدام حلقة while لإخراج الأرقام من 1 إلى 5.۔

1i = 1
2while i <= 5:
3    print(i)
4    i += 1

يعمل هذا الكود على النحو التالي۔

  • ابدأ بـ i كـ 1، واطبع i طالما أنها أقل من أو تساوي 5، وزد قيمة i بمقدار 1 في كل مرة۔

ملاحظة:

يجب أن تضع النقاط التالية في اعتبارك عند استخدام عبارة while۔

  1. احذر من الحلقات اللانهائية

    • إذا كان الشرط في حلقة while دائمًا صحيحًا (True)، فسوف يؤدي ذلك إلى حلقة لانهائية۔ يجب تنفيذ عمليات ملائمة لتغيير الشرط؛ وإلا فلن يتوقف البرنامج.۔
  2. استخدام break و continue:

    • يُستخدم break عندما تريد الخروج من الحلقة قبل انتهائها۔
    • يقوم continue بتجاوز التكرار الحالي ويبدأ التكرار التالي۔ كن حذرًا، فقد يؤدي وجود شروط غير صحيحة في الحلقة إلى حلقة لانهائية۔

مثال على break:

1i = 1
2while i <= 5:
3    if i == 3:
4        break  # Exit the loop when i becomes 3
5    print(i)
6    i += 1
  • في هذه الحالة، بعد طباعة الأرقام 1 و 2، تنتهي الحلقة عندما تصبح قيمة i تساوي 3۔

مثال على continue:

1i = 0
2while i < 5:
3    i += 1
4    if i == 3:
5        # Skip the print statement and move to the next loop iteration when i is 3
6        continue
7    print(i)
  • في هذه الحالة، يتم تخطي الطباعة فقط عند القيمة 3، مما ينتج عنه 1, 2, 4, 5۔
  • عن طريق زيادة قيمة i في بداية الحلقة، يتقدم العداد حتى في حال تنفيذ continue، مما يمنع حدوث حلقة لانهائية۔

يمكنك متابعة المقالة أعلاه باستخدام Visual Studio Code على قناتنا على YouTube.۔ يرجى التحقق من القناة على YouTube أيضًا.۔

YouTube Video