fbpx

تعلم لغة البايثون – الدرس الثامن الحلقات في بايثون 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

الدرس التاسع






Leave a Reply