الدرس 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

جارٍ تحميل بيئة بايثون… تُحمَّل مرّة واحدة ثم يحفظها المتصفح.

–/5

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

5 معايير في بطاقة «المطلوب».