محمد ردمان2 نشر منذ 11 ساعة أرسل تقرير نشر منذ 11 ساعة what is the difference between THESE CODES PLEASE 1 اقتباس
0 Sherif Aboghazala نشر منذ 8 ساعة أرسل تقرير نشر منذ 8 ساعة إليك الفرق بين الكودين بشكل واضح وبسيط: أول كود 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 نشر منذ 4 ساعة أرسل تقرير نشر منذ 4 ساعة الكود الأول لا مشكلة به لأنك استخدمت الدالة zip التي تقوم بدمج عناصر القائمة capitals مع عناصر المجموعة cpas، وتعمل عن طريق إنشاء أزواج من العناصر وتتوقف تلقائيًا عند انتهاء أقصر مصفوفة أو مجموعة تم تمريرها لها. وهي المجموعة في المتغير cpas الذي يحتوي على عنصرين فقط، وبالتالي سيقوم الكود بطباعة سطرين فقط ولن يلتفت للعنصر الثالث في القائمة، مع ملاحظة أن ترتيب طباعة D و d غير مضمون لأن الـ set لا تحتفظ بترتيب العناصر. بينما الكود الثاني به خطأ لغوي برمجي Syntax error حيث قمت باستدعاء الدالة items() على المتغير capitals والذي هو من نوع list ولا يمتلك تلك الدالة (ميثود) لأنها مخصصة للتعامل مع القواميس dictionaries لاستخراج المفاتيح والقيم، ولذلك لن يتم تنفيذ حلقة التكرار من الأساس. اقتباس
السؤال
محمد ردمان2
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.