محمد ردمان2 نشر 9 ديسمبر 2025 أرسل تقرير نشر 9 ديسمبر 2025 what is the difference between THESE CODES PLEASE 2 اقتباس
0 Sherif Aboghazala نشر 9 ديسمبر 2025 أرسل تقرير نشر 9 ديسمبر 2025 إليك الفرق بين الكودين بشكل واضح وبسيط: أول كود capitals = ['r','f','l'] cpas = {"D","d"} for cap, cpa in zip(capitals, cpas): print(cpa, ":", cap) capitals = ['r','f','l'] cpas = {"D","d"} for cap, cpa in zip(capitals, cpas): print(cpa, ":", cap) ما يحدث هنا: capitals → قائمة (list) cpas → مجموعة (set) zip(capitals, cpas) يربط العنصر الأول مع الأول، الثاني مع الثاني… → لكن المجموعة set غير مرتبة! لذلك ترتيب "D", "d" غير مضمون. الحلقة تعطيك مخرجات صحيحة مثل: D : r d : f أو قد تكون بالعكس… حسب ترتيب الـ set. الكود الثاني (خاطئ) capitals = ['r','f','l'] cpas = {"D","d"} for capitals , cpas in capitals.items(): print(cpas, ":", capitals) capitals = ['r','f','l'] cpas = {"D","d"} for capitals , cpas in capitals.items(): print(cpas, ":", capitals) الأخطاء هنا: capitals هو list → والقوائم ليس لديها items() → سيعطيك خطأ: AttributeError: 'list' object has no attribute 'items' أنت تكتب: for capitals, cpas in capitals.items(): لكنّك: تستخدم نفس اسم المتغيّر capitals للّست والقيم داخل الحلقة وتستخدم items() مع متغيّر ليس قاموسًا حتى لو كان قاموسًا، الصياغة غلط لأنها تعيد مفاتيح وقيم، وليس عناصر من قائمتين. إذا أردت الكود الثاني يعمل، يجب أن يكون لديك dict هكذا: capitals = {"r": "D", "f": "d"} for cap, cpa in capitals.items(): print(cpa, ":", cap) capitals = {"r": "D", "f": "d"} for cap, cpa in capitals.items(): print(cpa, ":", cap) اقتباس
0 Mustafa Suleiman نشر 10 ديسمبر 2025 أرسل تقرير نشر 10 ديسمبر 2025 الكود الأول لا مشكلة به لأنك استخدمت الدالة zip التي تقوم بدمج عناصر القائمة capitals مع عناصر المجموعة cpas، وتعمل عن طريق إنشاء أزواج من العناصر وتتوقف تلقائيًا عند انتهاء أقصر مصفوفة أو مجموعة تم تمريرها لها. وهي المجموعة في المتغير cpas الذي يحتوي على عنصرين فقط، وبالتالي سيقوم الكود بطباعة سطرين فقط ولن يلتفت للعنصر الثالث في القائمة، مع ملاحظة أن ترتيب طباعة D و d غير مضمون لأن الـ set لا تحتفظ بترتيب العناصر. بينما الكود الثاني به خطأ لغوي برمجي Syntax error حيث قمت باستدعاء الدالة items() على المتغير capitals والذي هو من نوع list ولا يمتلك تلك الدالة (ميثود) لأنها مخصصة للتعامل مع القواميس dictionaries لاستخراج المفاتيح والقيم، ولذلك لن يتم تنفيذ حلقة التكرار من الأساس. اقتباس
0 ياسر مسكين نشر 16 ديسمبر 2025 أرسل تقرير نشر 16 ديسمبر 2025 وعليكم السلام ورحمة الله تعالى وبركاته، الفرق الأساسي بين الكودين هو آلية التكرار ففي الكود الأول يستخدم zip(capitals, cpas) الذي يجمع العنصر الأول من capitals مع العنصر الأول من cpas في tuple واحد (cap, cpa) ثم يطبعهما معا وهذا يتطلب أن يكون للقائمتين نفس الطول ويتوقف عند أقصر قائمة. بينما الكود الثاني يستخدم capitals.items() الذي يتكرر على capitals ك dictionary وليس list ويعيد أزواج key-value على شكل (cpas, capitals) حيث cpas هو المفتاح وcapitals هو القيمة المرتبطة به. فالكود الأول يعمل على قائمتين منفصلتين بالتوازي، بينما الكود الثاني يفترض أن capitals هو dictionary واحد ويستخرج العناصر منه مباشرة - لكن لاحظ أن capitals معرف ك list وليس dictionary مما يعني أن الكود الثاني سيعطي خطأ AttributeError لأن lists لا تملك دالة items(). اقتباس
السؤال
محمد ردمان2
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.