التمرين الأول: بنية مشروع دفتر العناوين اختر الإجابة الصحيحة بعد تحليل مسؤوليات الدوال ومسار البيانات داخل المشروع. لماذا تمثل جهات الاتصال في البرنامج بقائمة من القواميس؟ شرح السؤال يحتاج البرنامج إلى مجموعة يمكن المرور على عناصرها بالترتيب. ويحتاج كل عنصر إلى ربط الاسم برقم الهاتف بمفاتيح واضحة. لأن القاموس لا يستطيع تخزين أكثر من قيمة واحدة لأن القائمة تجمع عدة جهات اتصال، ويمثل كل قاموس بيانات جهة واحدة لأن الملف لا يقبل النصوص أو الأرقام لأن الحلقة لا تستطيع المرور على قاموس الإجابة الصحيحة: لأن القائمة تجمع عدة جهات اتصال، ويمثل كل قاموس بيانات جهة واحدةتسمح القائمة بإضافة عدة سجلات والمرور عليها، بينما ينظم القاموس كل سجل باستخدام مفتاحي name وphone.يفصل هذا التصميم بين مستوى المجموعة ومستوى السجل؛ فيسهل عرض جميع الجهات أو الوصول إلى معلومة محددة داخل جهة واحدة. ما نتيجة استدعاء load_contacts() في أول تشغيل عندما لا يكون ملف contacts.txt موجودًا؟ شرح السؤال تنشئ الدالة قائمة فارغة قبل محاولة فتح الملف. افحص معالج غياب الملف والقيمة التي تصل إليها عبارة الإرجاع. ينشئ جهة اتصال فارغة تلقائيًا يتوقف البرنامج قبل تشغيل القائمة الرئيسية تعيد قائمة فارغة ويستمر البرنامج تعيد النص contacts.txt الإجابة الصحيحة: تعيد قائمة فارغة ويستمر البرنامجتبدأ الدالة بـcontacts = []، ثم تلتقط FileNotFoundError وتنفذ pass. تصل بعد ذلك إلى return contacts فتعيد القائمة الفارغة.يعد غياب الملف في أول تشغيل حالة متوقعة لا فشلًا قاتلًا؛ إذ سينشئه البرنامج لاحقًا عند أول عملية حفظ. ما الغرض من التسلسل strip() ثم split(',') عند تحميل كل سطر؟ شرح السؤال يحتوي السطر المقروء عادةً على محرف نهاية سطر. وبعد تنظيفه يجب فصل الاسم عن رقم الهاتف المخزنين بفاصلة. حذف جهة الاتصال من الملف تحويل رقم الهاتف إلى عدد صحيح دمج الاسم ورقم الهاتف في نص واحد تنظيف السطر ثم فصل الاسم ورقم الهاتف الإجابة الصحيحة: تنظيف السطر ثم فصل الاسم ورقم الهاتفتزيل strip() المحارف الزائدة من الطرفين، ثم تحول split(',') السطر إلى جزأين يمكن إسنادهما إلى name وphone. ماذا تفعل display_contacts([]) عندما تستقبل قائمة فارغة؟ شرح السؤال تختبر الدالة القائمة قبل بدء الحلقة. حدّد الفرع الذي ينفذ عندما تكون القيمة المنطقية للقائمة الفارغة غير صحيحة. تعرض رسالة تفيد بأن دفتر العناوين فارغ تضيف جهة اتصال افتراضية تفتح الملف في وضع الكتابة تثير IndexError الإجابة الصحيحة: تعرض رسالة تفيد بأن دفتر العناوين فارغيكون الشرط if not contacts صحيحًا للقائمة الفارغة، فتطبع الدالة الرسالة ولا تدخل حلقة عرض الجهات.