الدرس 6 من 10

القوائم المتوازية

هدف الدرس

الدالتان zip وenumerate بدل أرقام المواضع

01

الشرح

حين تكون عندك قائمتان متوازيتان، كقائمة أسماء وقائمة درجات، قد تميل إلى كتابة for i in range(len(names)) ثم names[i] وscores[i]. هذه الطريقة تعمل، لكنها تُدخل أرقام مواضع لا حاجة إليها، ومن السهل أن تخطئ فيها.

أما zip(names, scores) فيمرّ على القائمتين معًا ويعطيك زوجًا في كل دورة: for name, score in zip(names, scores)، وdict(zip(keys, values)) يبني قاموسًا من قائمتين في سطر واحد. وإذا احتجت إلى رقم الدورة فـ enumerate(items, start=1) يعطيك الرقم مع العنصر، ويبدأ العدّ من الرقم الذي تختاره.

وانتبه إلى أن zip يتوقّف عند نهاية القائمة الأقصر دون أن ينبّهك، فإذا كان في إحداهما عنصر زائد ضاع دون أي خطأ، أما zip(a, b, strict=True) فيرفع الخطأ ValueError بدل أن يسكت.

02

المطلوب

اصنع القاموس grades من names وscores باستعمال dict(zip(...))، ثم اصنع lines، وهي قائمة نصوص مرقّمة من 1 بالشكل "1. ليان: 91"، واستعمل فيها enumerate وzip معًا.

الفحوص

5 فحوص
  1. القاموس grades يربط كل اسم بدرجته
  2. القائمة lines مرقّمة بالشكل المطلوب
  3. الترقيم يبدأ من 1 لا من 0
  4. القاموس grades مبنيّ بـ dict(zip(...))
  5. الترقيم بـ enumerate وليس بـ range(len(...))
main.py
المخرجاتPython (Pyodide)

نحمّل بيئة Python الآن. يحدث هذا مرّة واحدة فقط، ثم يحفظها متصفّحك.

–/5

يبدأ الفحص حين تجهز البيئة.

تجد 5 فحوص في بطاقة «المطلوب».