الدرس 6 من 10
القوائم المتوازية
- 10 دقائق
- 5 معايير للتصحيح
- 3 تلميحات
- إلى المطلوب
هدف الدرس
zip و enumerate بدل الفهارس
الشرح
قائمتان متوازيتان — أسماء ودرجات — تغريانك بـ 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 بدل الصمت.
المطلوب
اصنع grades من names وscores بـ dict(zip(...))، وlines قائمة نصوص مرقّمة من 1 بالشكل "1. ليان: 91"، بـ enumerate وzip معًا.
معايير التصحيح
5 معايير- grades تربط كل اسم بدرجته
- lines مرقّمة بالشكل المطلوب
- الترقيم يبدأ من 1 لا من 0
- grades مبنيّ بـ dict(zip(...))
- الترقيم بـ enumerate لا range(len(...))