• 1

كيف تعمل حلقة for في لغة بايثون؟

أتعلّم حاليا لغة بايثون البرمجيّة، وأريد معرفة ماهي حلقة for وكيف تعمل، وبماذا ستُفيدني؟

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 1

حلقة For ببساطة هي جملة تقوم بتكرار الشيفرة التّالعة لها عددا من المرّات، وأنت (المبرمج) من يُحدّد عدد مرّات التّكرار، فمثلا لنقل أنّك لسبب ما تريد أن تطبع جملة "Hello, World!” 100 مرة، لا يُمكنك أن تقوم بنسخ جملة الطّباعة 100 مرّة لأنّ الأمر سيأخذ الكثير من وقتك، عوضا عن ذلك يُمكنك استعمال حلقة For لتكرار جملة الطّباعة 100 مرّة، انظر المثال:

for count in range(1, 101):
    print 'Hello, World!'

هذه القطعة من الشّيفرة كافيّة لطباعة جملة التّرحيب 100 مرّة ولا تتطلّب الكثير من الوقت.
يُمكنك كذلك أن تقوم بطباعة مُتغيّر التّكرار (count في هذه الحالة) الذي يحمل قيمة التكرار ويزداد كل مرّة، فمثلا المثال التّالي:

for count in range(1, 6):
    print count

سيكون مخرج المثال أعلاه قيما كالتّالي:

1
2
3
4
5

يُمكنك كذلك أن تستعمل حلقة التّكرار For لكي تقوم بالمرور حول قيم قائمة معيّنة:

list = ['Hello', 4, 6, 9, 'World!','Hi']
for item in list:
    print item

الشيفرة أعلاه ستطبع جميع مُكونات القائمة list.

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 1

حلقة "لأجل" for تستعمل الوسيلة method: التالي next() التي تنوجد عندما تحول الكائن المراد الترديد iterate فوقه بإستخدام الدالة  iter() حيث تعود  بكائن ترديد يملك الوسيلة next(). تفقد التالي:

>>> obj="python"
>>> iobj=iter(obj)
>>> iobj.next()
'p'

 

حسنًا, الحلقة for تستخدم هذه الطريقة في العمل.. لكن قد يخطر في بالك سؤال: كيف تعرف أن هذه النهاية وتتوقف عندها؟ الجواب: تتوقف الحلقة عندما يعتلي الخطأ: StopIteration. الآن سأستعمل نفس الكائن السابق iobj وأردِّد محتوياته بإستخدام الحلقة for ولكن سأترك آخر قسم ألا وهو الحرف 'n' لِغاية ٍفي نفسي :).

>>> for i in range(len(iobj)-2):
...     print iobj.next()
... 
y
t
h
o

 

جرب ألَّا تقوم بالسابق ونفذ الأمر بواسطة الحلقة for مباشرةً (لكننا سنبقى نستعمل الذي في الأعلى):

>>> for i in iobj:
...     print i
... 
y
t
h
o
n

 

الذي حدث أن الحلقة for إستخدمت الوسيلة next() مما نتج عنه تخطي ما قد ردَّدناه سابقًا: 'p'. والآن آخر جزء.. ظهور الخطأ StopIteration الذي يعني توقف الحلقة.

>>> iobj.next()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration

أتمنى أن أكون قد أوضحت الفكرة بيسر وسهولة.

تمّ تعديل بواسطة samer_jabal
عدلته بسبب وجود بعض الأخطاء الإملائية وبعض الأخطاء في التسمية.
1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

وأود أن أضيف أنه في بايثون 3 قد أصبحت الوسيلة ()next بالإسم: ()__next__.

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن