/ / For حلقة: أمثلة والأخطاء المحتملة

للحلقة: أمثلة والأخطاء المحتملة

في علوم الكمبيوتر ، يتم استخدام حلقة forللقيام بنفس النوع من العمل عدة مرات. على سبيل المثال ، قم بإزالة البضائع من القائمة واحدة تلو الأخرى ، وفرز الأرقام في نطاق معين وتنفيذ البرنامج النصي المقابل لكل منها.

يتم استخدام حلقة for ، على العكس من ذلك ، في أغلب الأحيان. كلا الإصدارين موجودان في جميع لغات البرمجة. في عدد من SPs ، هو مماثل syntactically و semantically.

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

  • البيان
  • اسم المتغير المخصص ؛
  • قائمة معالجتها
  • الهيئات وظيفة والمشغلين إضافية.

على عكس اللغات المشابهة لـ C ، فإن التعليمات ليست كذلكمفصولة الأقواس المتعرجة {}. للقيام بذلك ، استخدم عامل التشغيل ":" بعد كتلة الحالة وتبويبها في نص الحلقة. بدون استخدام مسافة بادئة ، لن يعمل رمز علامة التبويب وسيظهر خطأ.

كمشغلين إضافيين ، يتم استخدام "متابعة" ، "فاصل ، تمرير" - مؤشرات لتخطي التكرار ، نهاية الدورة ، تخطي التكرار. يشار إليها بعد كتلة من بعض الشروط الأخرى.

دورة ل

تستخدم هذه الدورة للتكرار من خلال جميع عناصر المجموعة. تعيين في الشكل

للمتغير في القائمة: التعليمات

مخطط دورة

يشبه حلقة foreach من C ++.

foreach (اكتب العنصر في المجموعة) {}؛

لأني في "مرحبا العالم":

طباعة (i * 2 ، end = "")

hheelllloo wwoorrlldd

في Python ، تكون الحلقة for تعاونية - يتم تنفيذ تعليمات النص لكل عضو في القائمة دون تحديد تسلسل بشكل صريح. يتم تنفيذ التعليمات بالترتيب الأمثل.

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

list_of_lists = [["hammerhead"، "white white"، "dogfish"]، [0، 1، 2]، [9.9، 8.8، 7.7]]

للقائمة في list_of_lists:

طباعة (قائمة)

["رأس مطرقة" ، "أبيض عظيم" ، "كلب البحر"]

[0 ، 1 ، 2]

[9.9 ، 8.8 ، 7.7]

لعرض كل عنصر من عناصر الصفيف المتداخل ، يجب عليك استخدام حلقات متداخلة.

استمر

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

رقم = 0

الرقم في النطاق (10):

number = number + 1

إذا كان الرقم == 5:

استمرار # هنا هو بيان المتابعة

طباعة (str (number))

طباعة ("End")

كل رقم في قائمة القيم يتراوح من 0 إلى 10يزيد عدد المتغير ، وهو صفر في البداية. عندما يحصل الرقم على القيمة 5 ، تنكسر الحلقة ويبدأ التكرار التالي. سوف يتحول:

1

2

3

4

6

7

8

9

10

انتهى

استراحة

يتم استخدام عامل التشغيل بالتزامن مع حالة if. يقاطع هذا التصميم الدورة تمامًا عند حدوث عامل.

بيان إحباط الحلقة
رقم = 0

الرقم في النطاق (10):

رقم + = 1

إذا كان الرقم == 5:

استراحة # استراحة

طباعة ("Number =" + str (number))

طباعة ("خارج الحلقة")

هنا ، تحدد عبارة if شرطًا: إذا كانت قيمة رقم المتغير 5 ، فستتكرر الحلقة. عند كل تكرار ، يتم تنفيذ طريقة print () الأولى وتعرض إشعارًا

الرقم = 5.

عندما يتم إيقاف الحلقة بواسطة العبارة break ، يتم تنفيذ طريقة print () التالية.

مثال آخر يتحقق ما إذا كان الرقم الثاني قابلاً للقسمة على الأول دون الباقي.

لـ n في النطاق (2 ، 10):
لـ x في النطاق (2 ، n):
إذا كان n٪ x == 0:
print (n، "يساوي"، x، "*"، n // x)
استراحة
آخر:
# حلقة سقطت من دون إيجاد عامل
print (n، "is a number number")

في هذه الحالة ، يتم استخدام حلقة متداخلة.أولاً ، يتم قبول جميع أعضاء مجموعة من الأرقام تتراوح من 2 إلى 10 كـ n. لكل ن ، يتم تعريف قائمة جديدة مع العناصر من 2 إلى ن. وبالتالي ، لدينا 8 مصفوفات بأطوال مختلفة. يتم تعيين جميع العناصر من المجموعات الناتجة بواسطة المتغير x. يتحقق الشرط if الآن من أن نتيجة n / x هي قيمة صحيحة. إذا كانت القيمة true ، تنكسر الحلقة وتعرض رسالة. إذا تم تقسيم n / x مع الباقي ، فسيتم عرض رسالة أخرى.

ممر

يجب على عامل التشغيل تجاهل الشروط الإضافية.

رقم = 0
الرقم في النطاق (10):
رقم + = 1
إذا كان الرقم == 5:
تمر
طباعة (str (number))
طباعة ("End")

يعمل البرنامج كما لو كان الشرط إذا كان الرقم == 5 غير موجود. يظهر على الشاشة

1

2

3

4

5

6

7

8

9

10

انتهى

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

فئة MyClass (كائن):

def meth_a (self):

تمر

def meth_b (self):

طباعة "أنا" meth_b "

لا تحتوي دالة meth_a على تعليماتها الخاصة بعد. لكن Python تتطلب ألا تكون كتل الكود ، باستثناء def ، class فارغة. خلاف ذلك ، تظهر رسالة خطأ.

خطأ المسافة البادئة: توقع كتلة مسافة بادئة.

بدلاً من ذلك ، يمكنك تحديد تصريح.

فئة CompileError (استثناء):

تمر

الغرض الآخر من استخدام عبارة المرور هو عدم فعل أي شيء بشكل صريح.

يمكن رؤية ذلك في مثال آخر على حلقة for و pass:

بالنسبة لـ t في النطاق (25):

افعل (ر)

إذا كانت t == 20:

تمر

يتكرر مقتطف الرمز هذا عبر عناصر القائمة.من 0 إلى 25. تعتبر متغير t. عند كل تكرار ، يتم تنفيذ وظيفة (). إذا كنت لا تريد أن يحدث شيء على قيمة معينة ، يتم الإشارة إلى التمرير. على سبيل المثال ، تعرض الدالة do رسالة 24 مرة وتتخطى التعليمات عند t = 20.

المصفوفات

تساعد البرامج التي تحتوي على حلقة for على إنشاء بعض تسلسل القيم وتعيينها للمتغيرات.

المصفوفات والحلقة

السجل التالي ممكن:

for i in [0، 1، 2، 3، 4، 5]:

طباعة i ** 2

إذا كانت القائمة تحتوي على المزيد من العناصر ، فسيكون من المنطقي أكثر إنشاء مصفوفة منفصلة.

المصفوفة = [1 ، 2 ، 3 ، 4 ، 5 ، 6 ، 7 ، 8 ، 9]

للصفيف:

طباعة أنا

لإنشاء قوائم مثل

المصفوفة = [1 ، 2 ، 3 ، 4 ، 5 ، 6 ، 7 ، 8 ، 9] 

، في Python هناك دالة range ().تأخذ طريقة range () في منطقة المعلمة ثلاث وسيطات: قيمة البداية ، النهاية ، الخطوة. مطلوب فقط العنصر الأخير من القائمة. وبالتالي ، سيعني النطاق (5) أن المصفوفة تتضمن أرقامًا من 0 إلى 5. إذا حددت خطوة ، فأنت بحاجة إلى تحديد العنصر الأولي.

المدى (0 ، 10 ، 2)

نحصل على:

0, 2, 4, 6, 8, 10

قوائم الصفوف

العمل مع مثل هذه القوائم يشبه العددية. على سبيل المثال ، هناك قائمة

الألوان = ["أحمر" ، "أخضر" ، "أزرق" ، "أصفر"]

يمكن للمطورين الذين اعتادوا على C كتابة الوظيفة التالية.

for i in range (len (colors)):
ألوان الطباعة [i]

سيتم تنفيذ التعليمات البرمجية دون أخطاء ، ولكن يبدو أن الاستخدام الصحيح للحلقة for هو كما يلي:

الألوان = ["أحمر" ، "أخضر" ، "أزرق" ، "أصفر"]
للون في الألوان:
لون الطباعة
إنشاء الصفيف

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

الألوان = ["أحمر" ، "أخضر" ، "أزرق" ، "أصفر"]
للون في عكس (الألوان):
لون الطباعة

الإدخال التالي خاطئ. مرة أخرى ، جاء هذا من لغة سي.

القوائم والفهارس

يحتوي Python على وظائف تعداد () مضمنة للعمل مع فهارس الصفيف. وهي مفيدة في الثعبان للحلقات.

المصفوفات والفهرس

الحجة هي سلسلة من القيم. تبسط الدالة enumerate () استخدام الكود التالي:

بالنسبة إلى i في النطاق (len (L)):
البند = L [i]
# ... احسب بعض النتائج بناءً على العنصر ...

يتم استخدام طريقة len () هنا. تقوم بإرجاع عدد العناصر ، في هذه الحالة ، صفيف L. يتم أخذ العديد من العناصر كوسيطة لدالة range (). وبالتالي ، نحدد القائمة [0 ، ... ن].

باستخدام L [i] نحصل على كل عنصر من عناصر المصفوفة L.

L [0] ، L [1] ، L [2] ، إلخ.

تستبعد وظيفة التعداد () الحاجة إلى تهيئة متغير العداد b وتبسط الكتابة إلى

للعداد ، القيمة بالعدد (L):
print ("index:" counter، "value:" value)

يقوم Enumerate () بإرجاع زوج عنصر العداد ، لذلك يتم تحديد متغيرين باستخدام عامل حلقة.

تتشابه دالات العناصر () و iteritems () ، التي يتم استخدامها كطرق ،.

د. العناصر ()

د. المواد ()

قائمتان

عندما تحتاج إلى استخدام أعضاء قوائم متعددة ، يتم استخدام وظيفة zip ().

انضمام الصفيف

يأخذ القائمة A والقائمة B ، ويجعلهما في كائن مضغوط واحد يحتوي على صفوف متداخلة. يربط كل عنصر في الكائن الجديد أعضاء القائمتين A و B ويرتبهم حسب الفهرس.

zip_object [1] = [A [1]، B [1]] ،

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

لتضمين كل عنصر في المجموعة ، حتى العنصر الذي لا يحتوي على زوج ، يتم استخدام zip_longest ().

قائمة (itertools.zip_longest ((1،2،3)، [4]))
# [(1، 4)، (2، لا شيء)، (3، لا شيء)]

فرز مفتاح

عندما لا تحتاج فقط إلى المشي عبر عناصر المصفوفة ، ولكن تعديلها ، يتم تطبيق وظيفة keys ().

المفتاح هو القيمة

تقوم الطريقة بتكرار وإعادة قائمة مفاتيح القاموس المتاحة.

for k in d.keys ():
إذا كان k.startswith ("R"):
ديل د [ك]

هناك صفيف د. يتم نسخ عناصرها باستخدام طريقة keys (). كل عنصر هو متغير ك. تتم معالجته باستخدام startwith ؛ عند المصادفة ، يتم حذف العنصر من الصفيف الرئيسي.

startwith () بإرجاع علامة تتحقق مما إذا كان السطر يبدأ بالبادئة المحددة. تحتوي الدالة على ثلاث وسيطات: البادئة والبداية والنهاية.

str.startswith (بادئة [، بداية [، نهاية]]) -> منطقية

مطلوب الأول فقط - البادئة. يمكن أن يكون سلسلة أو مجموعة.

my_str.startswith ("القيمة")

أو

my_str.startswith (("value1"، "value2"))

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

تشير الوسيطة start إلى فهرس العنصر بـيبدأ العد التنازلي. القيم الإيجابية والسلبية مدعومة. إذا كانت start = -x ، فسيبدأ البحث بعنصر به فهرس x من النهاية. تشير معلمة النهاية إلى الحرف الأخير الذي يتوقف عنده تحليل الخط. كما أنه يدعم القيم السلبية. مع end = -x ، فإن آخر عضو في القائمة هو الفهرس x من البداية.

تشبه دالة startwith () ، تعمل دالة endswith (). وهو يتحقق لمعرفة ما إذا كان الخط ينتهي بـ postfix المحدد. يحتوي على ثلاث معلمات لاحقة ، start ، end ، كما يُرجع قيمة منطقية.

دمج القوائم

إذا كنت بحاجة إلى ربط عناصر صفيفين ،أسرع طريقة هي استخدام مجموعة من طرق الإملاء (izip (الصفيف 1 ، الصفيف 1)). في هذه الحالة ، لا يتم ترتيب العناصر بالتسلسل الواحد تلو الآخر ، ولكن في الشكل:

"Array element 1": "الصفيف العنصر 2"
الأسماء = ["raymond"، "rachel"، "matthew"]
الألوان = ["red" ، "green" ، "blue"]
d = dict (zip (الأسماء والألوان))
# {"ماثيو": "blue"، "rachel": "green"، "raymond": "red"}

تنشئ طريقة dict () قاموسًا بداخلهيتم وضع القيم بالطريقة أعلاه - من خلال ":". يتم استخدام عنصر المصفوفة 2 كقيمة رئيسية. للاتصال به ، تحتاج إلى الوصول إليه بواسطة الفهرس - قيمة المصفوفة 1.

د ["ريموند"]

# أحمر

عد قائمة الأعضاء

لمعرفة عدد العناصر التي تتكون منها القائمة ، يتم استخدام الدالة get ().

d.get (key، default = None)

تقوم هذه الطريقة بفحص القاموس d بحثًا عن وجود مفتاح ، وترجع مفتاح الفهرس [index].

الألوان = ["أحمر" ، "أخضر" ، "أحمر" ، "أزرق" ، "أخضر" ، "أحمر"]
د = {}
للون في الألوان:
d [color] = d.get (color، 0) + 1

تعد الطريقة get () أكثر نظيرًا وأكثر ملاءمة من التعليمات البرمجية التالية.

الألوان = ["أحمر" ، "أخضر" ، "أحمر" ، "أزرق" ، "أخضر" ، "أحمر"]

د = {}

للون في الألوان:

إذا كان اللون ليس في د:

د [اللون] = 0

د [لون] + = 1

هذه هي الأمثلة الرئيسية والأخطاء المحتملة للحلقة for.

يحب:
0
الوظائف الشعبية
التطور الروحي
طعام
ذ