اذهب إلى المحتوى
  • 1

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

عاطي

السؤال

Recommended Posts

  • 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

حلقة "لأجل" 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
عدلته بسبب وجود بعض الأخطاء الإملائية وبعض الأخطاء في التسمية.
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...