ترقيم العناصر ومزاوجة قائمتين
الأسماء lida ثم guest، والأشربة water ثم tea. zip يعطي أول كل قائمة معاً، ثم الثاني. enumerate يضع رقماً بجانب كل اسم، والرقم 0 إن لم تعطِ بداية أخرى. for كان يمشي على صف واحد جاهز. break و continue لا يرقّمان ولا يزاوجان. هنا الحلقة لا تُقطع: إما رقم، وإما زوج.
القائمة names فيها سلسلتان. enumerate(names) يعطي في كل دورة رقماً واسماً. الرقم الأول 0، لأنك لم تقل بداية أخرى. print يكتب الاثنين في سطر واحد.
names = ["lida", "guest"]
for number, name in enumerate(names):
print(number, name)
ترى 0 lida ثم 1 guest. الصفر والواحد ليسا مخزونين داخل names. names ما زالت سلسلتين. الرقم يعيش تلك الدورة فقط.
ابدأ العد من 1
مرّر 1 وسيطاً ثانياً. enumerate(names, 1) يكتب 1 lida ثم 2 guest. ترتيب الأسماء لا يتحرك. العد وحده يتغير. احذف الوسيط الثاني فتعود إلى 0.
zip يأخذ قائمتين ويعطيك عنصراً من كل واحدة، بالترتيب نفسه. أول names هو lida وأول drinks هو water. الدورة الأولى lida مع water. الثانية guest مع tea. لا رقم هنا، إلا إذا ناديت enumerate أيضاً. هذا البرنامج لا يناديه.
names = ["lida", "guest"]
drinks = ["water", "tea"]
for name, drink in zip(names, drinks):
print(name, drink)
ترى lida water ثم guest tea. المزاوجة تتبع ترتيب القائمة، لا معنى الاسم. بدّل الأشربة فيتبدل الزوجان.
القائمة الأقصر تنهي الحلقة
ضع في drinks كلمة water وحدها. zip يبدأ من رأس القائمتين، فالدورة الأولى lida مع water. لا شراب ثانٍ. zip لا يخترع واحداً ولا يرفع خطأ. guest لا يُزار، والحلقة تنتهي.
names = ["lida", "guest"]
drinks = ["water"]
for name, drink in zip(names, drinks):
print(name, drink)
السطر الوحيد هو lida water. guest ما زال داخل names. لم يكن بجانبه شراب، فهذه الحلقة لم تصل إلى ذلك الاسم.
أربعة نداءات، وماذا يكتب كل منها. صفّا enumerate يختلفان في البداية فقط. صفّا zip يختلفان في طول drinks فقط.
📊 ماذا يكتب كل نداء
| النداء | ما تراه |
|---|---|
| enumerate(names) | 0 مع lida، ثم 1 مع guest |
| enumerate(names, 1) | 1 مع lida، ثم 2 مع guest |
| zip و drinks فيها water ثم tea | lida مع water، ثم guest مع tea |
| zip و drinks فيها water فقط | lida مع water، ثم تنتهي الحلقة |
الصفحة التالية عن دالة: عمل له اسم، تستطيع نداءه لاحقاً. لا ترقّم قائمة ولا تزاوج قائمتين.
احسب قبل التشغيل
- names هي lida ثم guest. أي أسطر يكتبها enumerate(names)؟
- تعطي البداية 1. ما السطر الأول؟
- drinks هي water ثم tea. ما السطر الثاني من zip؟
- drinks فيها water فقط. هل يُكتب guest؟ هل يتوقف البرنامج بخطأ؟
حيث تفسد الأزواج
- انتظار البداية من 1 وأنت لم تمرّر بداية
- ظن أن الرقم يُخزَّن راجعاً داخل القائمة
- مزاوجة lida مع tea لأن tea تبدو أنسب
- انتظار guest حين لا يملك drinks إلا عنصراً واحداً
- عدّ التوقف المبكر خطأ
enumerate يمشي على قائمة واحدة ويضيف رقماً. بلا بداية، الرقم 0 ثم 1: 0 مع lida ثم 1 مع guest. مرّر 1 فيخرج الاسمان نفسهما مع 1 و 2.
zip يمشي على قائمتين معاً. الطول المتساوي يعطي lida مع water ثم guest مع tea. إن كان drinks يحمل water فقط، يُكتب lida water وتنتهي الحلقة. guest يبقى في names وهذه الحلقة لا تبلغه.
الصفحة التالية تسمي عملاً لتستطيع نداءه.
🧠 اختبر معرفتك
اختبر معرفتك
تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع
📝 التعليمات
- اقرأ كل سؤال بعناية
- اختر أفضل إجابة لكل سؤال
- يمكنك إعادة الاختبار عدة مرات كما تريد
- سيتم عرض تقدمك في الأعلى