تعلم لغة البايثون – الدرس الثامن الحلقات في بايثون python loops
هناك نوعان من الحلقات في Python ، لفترة وجيزة.
حلقة “for”
لتكرار الحلقات عبر تسلسل معين. هنا مثال:
primes = [2, 3, 5, 7] for prime in primes: print(prime)
بالنسبة إلى الحلقات ، يمكنك التكرار عبر سلسلة من الأرقام باستخدام الدالتين “range” و “xrange”. الفرق بين النطاق و xrange هو أن دالة النطاق تقوم بإرجاع قائمة جديدة بأرقام من هذا النطاق المحدد ، في حين أن xrange يرجع مكررًا ، وهو أكثر كفاءة. (يستخدم Python 3 وظيفة النطاق ، والتي تعمل مثل xrange). لاحظ أن دالة النطاق قائمة على الصفر
مثال
# يطبع الأرقام 0،1،2،3،4 for x in range(5): print(x) # يطبع 3،4،5 for x in range(3, 6): print(x) # يطبع 3،5،7 for x in range(3, 8, 2): print(x)
سنحصل على النتيجة التالية عند التشغيل
0 1 2 3 4 3 4 5 3 5 7
حلقات “while”
بينما تتكرر الحلقات طالما تم استيفاء حالة منطقية معينة. فمثلا:
مثال
# يطبع 0،1،2،3،4 count = 0 while count < 5: print(count) count += 1 # This is the same as count = count + 1
سنحصل على النتيجة التالية عند التشغيل
0 1 2 3 4
عبارات “break” و “continue”
يتم استخدام الفاصل للخروج من حلقة متكررة أو حلقة من الوقت ، بينما يتم استخدام المتابعة لتخطي الكتلة الحالية ، والعودة إلى العبارة “for” أو “while”. بعض الأمثلة:
# يطبع 0،1،2،3،4 count = 0 while True: print(count) count += 1 if count >= 5: break # يطبع الأرقام الفردية فقط - 1،3،5،7،9 for x in range(10): # تحقق مما إذا كانت x متساوية if x % 2 == 0: continue print(x)
سنحصل على النتيجة التالية عند التشغيل
0 1 2 3 4 1 3 5 7 9
هل يمكننا استخدام جملة “else” للحلقات؟
خلافا للغات مثل C ، CPP .. يمكننا استخدام حلقات أخرى. عندما يفشل الشرط التكراري لعبارة “for” أو “while” ، يتم تنفيذ جزء التعليمات البرمجية في “else”. إذا تم تنفيذ عبارة break داخل الحلقة ، فسيتم تخطي جزء “آخر”. لاحظ أنه يتم تنفيذ جزء “آخر” حتى إذا كان هناك بيان متابعة.
وفيما يلي بعض الأمثلة على ذلك
# يطبع 0،1،2،3،4 ثم يطبع "قيمة العد وصلت 5" count=0 while(count<5): print(count) count +=1 else: print("count value reached %d" %(count)) # يطبع 1،2،3،4 for i in range(1, 10): if(i%5==0): break print(i) else: print("this is not printed because for loop is terminated because of break but not due to fail in condition")
سنحصل على النتيجة التالية عند التشغيل
0 1 2 3 4 count value reached 5 1 2 3 4
تمرين
قم بالمرور خلال جميع الأرقام الزوجية وطباعتها من قائمة الأرقام بنفس الترتيب الذي تم استلامها به. لا تطبع أي أرقام تأتي بعد 237 في التسلسل
numbers = [ 951, 402, 984, 651, 360, 69, 408, 319, 601, 485, 980, 507, 725, 547, 544, 615, 83, 165, 141, 501, 263, 617, 865, 575, 219, 390, 984, 592, 236, 105, 942, 941, 386, 462, 47, 418, 907, 344, 236, 375, 823, 566, 597, 978, 328, 615, 953, 345, 399, 162, 758, 219, 918, 237, 412, 566, 826, 248, 866, 950, 626, 949, 687, 217, 815, 67, 104, 58, 512, 24, 892, 894, 767, 553, 81, 379, 843, 831, 445, 742, 717, 958, 609, 842, 451, 688, 753, 854, 685, 93, 857, 440, 380, 126, 721, 328, 753, 470, 743, 527 ] # رمزك هنا
الحل
numbers = [ 951, 402, 984, 651, 360, 69, 408, 319, 601, 485, 980, 507, 725, 547, 544, 615, 83, 165, 141, 501, 263, 617, 865, 575, 219, 390, 984, 592, 236, 105, 942, 941, 386, 462, 47, 418, 907, 344, 236, 375, 823, 566, 597, 978, 328, 615, 953, 345, 399, 162, 758, 219, 918, 237, 412, 566, 826, 248, 866, 950, 626, 949, 687, 217, 815, 67, 104, 58, 512, 24, 892, 894, 767, 553, 81, 379, 843, 831, 445, 742, 717, 958, 609, 842, 451, 688, 753, 854, 685, 93, 857, 440, 380, 126, 721, 328, 753, 470, 743, 527 ] # رمزك هنا for number in numbers: if number == 237: break if number % 2 == 1: continue print(number)
سنحصل على النتيجة التالية عند التشغيل
<script.py> output: 402 984 360 408 980 544 390 984 592 236 942 386 462 418 344 236 566 978 328 162 758 918