Python استراحة، متابعة، تمرير البيانات مع الأمثلة

⚡ ملخص ذكي

Python تتحكم عبارات break و continue و pass في تدفق الحلقات. تُنهي عبارة break الحلقة، وتتخطى عبارة continue التكرار الحالي، بينما تعمل عبارة pass كعنصر نائب لا يفعل شيئًا عند تنفيذها داخل الحلقات أو الدوال أو الفئات.

  • 🔘 استراحة: تقوم عبارة break بإيقاف الحلقة فورًا ونقل التحكم إلى السطر الأول الذي يليها.
  • ☑️ استمر: تتجاوز عبارة "continue" بقية التكرار الحالي وتبدأ التكرار التالي.
  • ✅ نجاح: لا يقوم بيان المرور بأي شيء ويعمل كعنصر نائب للتعليمات البرمجية التي ستضاف لاحقًا.
  • 🧪 الحلقات المتداخلة: يؤثر أمر break أو continue على الحلقة الداخلية فقط، تاركًا الحلقات الخارجية تعمل.
  • 🛠️ كلا الحلقتين: تعمل العبارات الثلاث جميعها داخل حلقات for و while لتغيير تدفق التكرار العادي.
  • 🤖 مساعدة الذكاء الاصطناعي: يقترح المساعدون المدعومون بالذكاء الاصطناعي وبرنامج GitHub Copilot ويشرحون الاستخدام الصحيح لـ break و continue و pass.

Python كسر، مواصلة، تمرير البيانات

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

تعمل عبارات التحكم في الحلقة على قطع تدفق التنفيذ وإنهاء/تخطي التكرار حسب حاجتنا. Python يتم استخدام الاستراحة والمتابعة داخل الحلقة لتغيير تدفق الحلقة من الإجراء القياسي الخاص بها.

من المفترض أن يتم تكرار حلقة for أو while-loop حتى يفشل الشرط المحدد. عند استخدام عبارة Break أو continue، يتغير تدفق الحلقة عن الطريقة العادية.

Python بيان استراحة

تهتم عبارة Break بإنهاء الحلقة التي يتم استخدامها فيها. إذا تم استخدام عبارة Break داخل حلقات متداخلة، فسيتم إنهاء الحلقة الحالية، وسيستمر التدفق مع الكود المتبع الذي يأتي بعد الحلقة.

الرسم البياني لبيان الاستراحة هو كما يلي:

Python بيان استراحة

وفيما يلي الخطوات المتبعة في مخطط التدفق.

الخطوة 1) يبدأ تنفيذ الحلقة.

الخطوة 2) إذا كان شرط الحلقة صحيحًا، فسيتم تنفيذ الخطوة 2، حيث سيتم تنفيذ نص الحلقة.

الخطوة 3) إذا كان جسم الحلقة يحتوي على عبارة Break، فسوف تخرج الحلقة وتنتقل إلى الخطوة 6.

الخطوة 4) بعد تنفيذ شرط الحلقة وإتمامه، ستنتقل إلى التكرار التالي في الخطوة 4.

الخطوة 5) إذا كان شرط الحلقة خاطئًا، فسيتم الخروج من الحلقة والانتقال إلى الخطوة 6.

الخطوة 6) نهاية الحلقة.

كسر تدفق تنفيذ البيان

عندما تبدأ حلقة for في التنفيذ، ستتحقق من حالة if. لو صحيحعندئذٍ، يتم تنفيذ عبارة break، وتنتهي حلقة for. أما إذا كان الشرط خاطئًا، فسيتم تنفيذ الكود الموجود داخل حلقة for.

كسر تدفق تنفيذ البيان

عند تنفيذ الحلقة while، فإنها ستتحقق من حالة if؛ اذا كانت صحيح، يتم تنفيذ عبارة break، وتخرج حلقة while. إذا كان الشرط خاطئًا، فسيتم تنفيذ الكود الموجود داخل حلقة while.

كسر تدفق تنفيذ البيان

مثال: عبارة Break داخل الحلقة

القائمة my_list = ['Siya'، 'Tiya'،'Guru'، 'داكش'، 'ريا'، 'Guruيتم تكرار العنصر '] باستخدام حلقة for. نحن مهتمون بالبحث عن الاسم 'Guruمن القائمة my_list.

داخل حلقة التكرار، يقارن شرط if كل عنصر من القائمة بالاسم 'Guruإذا أصبح الشرط صحيحًا، فسيتم تنفيذ عبارة break، وسيتم إنهاء الحلقة.

مثال العمل باستخدام عبارة Break كما هو موضح أدناه:

my_list = ['Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] 

for i in range(len(my_list)):
    print(my_list[i])
    if my_list[i] == 'Guru':
        print('Found the name Guru')
        break
        print('After break statement')

print('Loop is Terminated')

الناتج المتوقع:

Siya
Tiya
Guru
Found the name Guru
Loop is Terminated

مثال: عبارة Break داخل حلقة while

my_list = ['Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] 
i = 0

while True:
    print(my_list[i])
    if (my_list[i] == 'Guru'):
        print('Found the name Guru')
        break
        print('After break statement')
    i += 1

print('After while-loop exit')

الناتج المتوقع:

Siya
Tiya
Guru
Found name Guru
After while-loop exit

مثال: بيان الاستراحة داخل الحلقات المتداخلة

في المثال، لدينا حلقتان للحلقة. تتكرر كلتا الحلقتين من نطاق من 2 إلى 0. في الحلقة for الثانية، أضفنا شرطًا حيث إذا كانت قيمة مؤشر for-loop الثاني هي 3، فيجب كسره.

لذا، وبسبب عبارة Break، فإن حلقة for الثانية لن تتكرر أبدًا للرقمين 2 و3.

for i in range(4):
    for j in range(4):          
        if j==2:    
            break
        print("The number is ",i,j);  

الناتج المتوقع:

The number is  0 0
The number is  0 1
The number is  1 0
The number is  1 1
The number is  2 0
The number is  2 1
The number is  3 0
The number is  3 1

Python بيان مستمر

استخدم استمر يتخطى البيان الكود الذي يأتي بعده، ويتم تمرير عنصر التحكم مرة أخرى إلى البداية للتكرار التالي.

بناء الجملة:

continue

متابعة مخطط التدفق

Python بيان مستمر

وفيما يلي الخطوات المتبعة في مخطط التدفق.

الخطوة 1) يبدأ تنفيذ الحلقة.

الخطوة 2) سيتم تنفيذ التعليمات البرمجية داخل الحلقة. إذا كان هناك عبارة مستمرة داخل الحلقة، فسيعود عنصر التحكم إلى الخطوة 4، أي بداية الحلقة للتكرار التالي.

الخطوة 3) سيتم تنفيذ التعليمات البرمجية داخل الحلقة.

الخطوة 4) إذا كانت هناك عبارة متابعة أو تم تنفيذ الحلقة داخل الجسم، فسيتم استدعاء التكرار التالي.

الخطوة 5) بمجرد اكتمال تنفيذ الحلقة، ستخرج الحلقة وتنتقل إلى الخطوة 7.

الخطوة 6) إذا فشل شرط الحلقة في الخطوة 1، فسيتم الخروج من الحلقة والانتقال إلى الخطوة 7.

الخطوة 7) نهاية الحلقة.

متابعة تدفق تنفيذ البيان

تقوم حلقة التكرار (for) بالمرور على عناصر مصفوفة القائمة (my_list) المُعطاة. داخل حلقة التكرار، يتم تنفيذ شرط (if). إذا كان الشرط صحيحًا صحيحسيتم تنفيذ عبارة المتابعة، وسيمرر عنصر التحكم إلى بداية الحلقة للتكرار التالي.

تدفق الكود كما هو موضح أدناه:

متابعة تدفق تنفيذ البيان

عند تنفيذ الحلقة while، ستتحقق من حالة الشرط، إذا كانت كذلك صحيح، يتم تنفيذ عبارة "continue". سيعود التحكم إلى بداية حلقة "while" للتكرار التالي. إذا كان الشرط خاطئًا، فسيتم تنفيذ الكود الموجود داخل حلقة "while".

تدفق الكود كما هو موضح أدناه:

متابعة تدفق تنفيذ البيان

مثال: تابع داخل الحلقة

for i in range(10):    
    if i == 7:
        continue  
    print("The Number is :" , i)

الناتج المتوقع:

The Number is : 0
The Number is : 1
The Number is : 2
The Number is : 3
The Number is : 4
The Number is : 5
The Number is : 6
The Number is : 8
The Number is : 9

مثال: تابع داخل حلقة while

i = 0
while i <= 10:    
    if i == 7:
        i += 1
        continue  
    print("The Number is  :" , i)
    i += 1

الناتج المتوقع:

The Number is  : 0
The Number is  : 1
The Number is  : 2
The Number is  : 3
The Number is  : 4
The Number is  : 5
The Number is  : 6
The Number is  : 8
The Number is  : 9
The Number is  : 10

مثال: تابع داخل الحلقة المتداخلة

يوضح المثال أدناه استخدام حلقتين for-loops. تتكرر كلتا الحلقتين من نطاق من 2 إلى 0. في الحلقة for الثانية، هناك شرط، حيث إذا كانت قيمة مؤشر for-loop الثاني هي 3، فيجب أن يكون استمر. لذلك بسبب استمر بيان، فإن حلقة for الثانية سوف تتخطى التكرار لـ 2 وتستمر لـ 3.

for i in range(4):
    for j in range(4):          
        if j==2:    
            continue
        print("The number is ",i,j);

الناتج المتوقع:

The number is  0 0
The number is  0 1
The number is  0 3
The number is  1 0
The number is  1 1
The number is  1 3
The number is  2 0
The number is  2 1
The number is  2 3
The number is  3 0
The number is  3 1
The number is  3 3

Python بيان المرور

Python تُستخدم عبارة pass كعلامة نائبة داخل الحلقات والوظائف والفئة وعبارة if التي من المفترض أن يتم تنفيذها لاحقًا.

بناء الجملة

pass

ما هو بيان المرور في Python?

Python pass عبارة عن عبارة فارغة. عندما Python عندما يصادف المترجم عبارة المرور، فإنه لا يفعل شيئًا ويتم تجاهله.

متى تستخدم عبارة المرور؟

ضع في اعتبارك أن لديك وظيفة أو فئة مع ترك الجسم فارغًا. كنت تخطط لكتابة التعليمات البرمجية في المستقبل. ال Python سوف يلقي المترجم خطأ إذا صادف نصًا فارغًا.

يمكن أيضًا إضافة تعليق داخل نص الوظيفة أو الفئة، لكن المترجم يتجاهل التعليق وسيقوم بإلقاء خطأ.

يمكن استخدام عبارة المرور داخل نص الدالة أو نص الفئة. أثناء التنفيذ، يتجاهل المترجم، عندما يصادف عبارة المرور، ويستمر دون إعطاء أي خطأ.

مثال: تمرير العبارة داخل دالة

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

def my_func():
    print('pass inside function')
    pass
my_func()

الناتج المتوقع:

pass inside function

مثال: عبارة المرور داخل الفصل

في المثال أدناه، قمنا بإنشاء فئة فارغة تحتوي على عبارة طباعة متبوعة ببيان مرور. عبارة المرور هي إشارة إلى أن الكود الموجود داخل الفصل "My_Class" سيتم تنفيذه في المستقبل.

classMy_Class:
print("Inside My_Class")    
pass

الإخراج:

Inside My_Class

مثال: تمرير العبارة داخل الحلقة

في المثال أدناه، السلسلة 'Guruتُستخدم علامة ' داخل حلقة for. يتحقق شرط if من وجود الحرف 'r' ويستدعي عبارة الطباعة متبوعة بعبارة pass.

# Pass statement in for-loop
test = "Guru"
for i in test: 
    if i == 'r': 
        print('Pass executed') 
        pass
    print(i)

الناتج المتوقع:

G
u
Pass executed
r
u

مثال: تمرير العبارة داخل حلقة if

في المثال إذا حلقة يتحقق من قيمة a وإذا كان الشرط صحيحًا، فإنه يذهب ويطبع عبارة "تم تنفيذ التمريرة" متبوعة بتمريرة.

a=1
if a==1:
    print('pass executed')
    pass

الناتج المتوقع:

pass executed

متى تستخدم عبارة الاستراحة والمتابعة؟

  • A استراحة العبارة، عند استخدامها داخل الحلقة، ستنهي الحلقة وتخرج. إذا تم استخدامه داخل حلقات متداخلة، فسوف ينفصل عن الحلقة الحالية.
  • A استمر ستوقف العبارة التنفيذ الحالي عند استخدامها داخل حلقة، وسيعود عنصر التحكم إلى بداية الحلقة.

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

في حالة الكلمة الأساسية continue، سيتم إيقاف التكرار الحالي قيد التشغيل، وسيستمر في التكرار التالي.

الأسئلة الشائعة

تتجاوز عبارة continue باقي تكرار الحلقة الحالية وتنتقل إلى التكرار التالي. أما عبارة pass فلا تفعل شيئًا على الإطلاق، فهي مجرد عنصر نائب يحافظ على صحة بنية الحلقة أو الدالة أو الفئة.

تُنهي عبارة break الحلقة الداخلية التي تحتويها فقط، لذا تستمر الحلقات الخارجية في العمل. للخروج من عدة حلقات في آنٍ واحد، استخدم متغيرًا وسيطًا أو انقل الحلقات إلى دالة ثم أعد القيمة.

نعم. لا يتم تنفيذ كتلة else في الحلقة إلا عند انتهاء الحلقة بشكل طبيعي دون تنفيذ أمر break. وهي مفيدة لمنطق البحث، مثل طباعة رسالة "غير موجود" بعد فحص كل عنصر في التسلسل.

Python يُثير هذا خطأً في بناء الجملة، لأنّ استخدام break و continue مسموح به فقط داخل حلقة for أو while. إذا كنتَ بحاجة إلى عنصر نائب خارج الحلقة، فاستخدم عبارة pass بدلاً من ذلك، وهي مسموح بها في أي مكان يُتوقع فيه وجود عبارة.

بمجرد تنفيذ الأمر break أو continue، ينتقل التحكم من التكرار الحالي، وبالتالي تصبح التعليمات المكتوبة بعدهما في الأسطر التالية غير قابلة للتنفيذ. في الأمثلة أعلاه، لا يتم تنفيذ استدعاء print() بعد break، وهو في الواقع تعليمات برمجية غير مستخدمة.

تُنهي عبارة break الحلقة الأقرب المحيطة بها مع إبقاء الدالة قيد التشغيل. أما عبارة return فتُنهي الدالة بأكملها فورًا، مُعيدةً قيمةً ومُنهيةً جميع الحلقات داخل تلك الدالة في الوقت نفسه.

تقوم المساعدات الذكية مثل ChatGPT بإنشاء رمز التحكم في الحلقة من وصف بسيط، وتشرح سبب خروج الحلقة مبكرًا، وتحدد عبارات break أو continue في غير موضعها، وتقترح ما إذا كانت pass أو continue أو break هي الأنسب لمنطقك.

نعم. يُكمل GitHub Copilot تلقائيًا أوامر break وcontinue وpass من التعليقات أو التعليمات البرمجية المحيطة بها. أما أدوات الذكاء الاصطناعي الوكيل فتتجاوز ذلك، إذ تُعيد هيكلة تدفق الحلقات، وتُزيل التعليمات البرمجية غير المستخدمة بعد أمر break، وتُصلح أخطاء تدفق التحكم في الملف بأكمله تلقائيًا.

تلخيص هذه التدوينة بـ: