بدر عبدالكريم عبدالجبار نشر 1 سبتمبر أرسل تقرير نشر 1 سبتمبر السلام عليكم انا و صديقي كنا نعمل مشروع معرفة الرقم الاكبر من بين ٣ ارقام مختلفة ، كل واحد مننا كتب الكود بشكل مختلف ، من منا الصح ؟ 2 اقتباس
0 Chihab Hedidi نشر 1 سبتمبر أرسل تقرير نشر 1 سبتمبر كلا الكودين صحيحان تماما من الناحية البرمجية وكلاهما سيعطيك النتيجة المطلوبة وهي معرفة الرقم الاكبر بين الارقام الثلاثة. الكود الاول يعتمد على استخدام المعامل and للتحقق من شرطين معا في جملة if واحدة وهذا يجعل الكود مختصرا وسهل القراءة. الكود الثاني يعتمد على الشروط المتداخلة باستخدام if و else وهو اسلوب تعليمي جيد يوضح كيفية تسلسل المنطق وتجربة جميع الاحتمالات للوصول للنتيجة. لا يوجد كود خطا بينهما ولكن في العادة يفضل المبرمجون الطريقة الاكثر اختصارا ووضوحا كما في المثال الاول لسهولة صيانتها مستقبلا. يمكنك ايضا في بايثون استخدام دالة max للوصول للنتيجة بشكل مباشر ومختصر جدا. result = max(n1, n2, n3) print(result) 1 اقتباس
0 Mustafa Suleiman نشر 1 سبتمبر أرسل تقرير نشر 1 سبتمبر الطريقة الثانية أفضل لكونها تتعامل مع كل الحالات، ففي الطريقة الأولى استخدمت and لتفقد هل أكبر من الرقمين الآخرين لكن ستحتاج إلى مقارنة رقمين في كل حالة. أما الطريقة الثانية تتبع منهج تقصي تدريجي، بمعنى مقارنة الرقم الأول بالثاني ثم مقارنة النتيجة بالرقم الثالث، وهنا عدد مقارنات أقل في المتوسط من الطريقة الأولى، وسيتم طباعة الرقم في حال التساوي، أما الأولى لن تطبع ذلك. بمعنى تم إدخال 5, 5, 3 فلن يتم طباعة أي شيء في الكود الأول بسبب الشروط. ويوجد دالة max في بايثون لتسهيل تلك المهمة: n1 = int(input("Enter first number: ")) n2 = int(input("Enter second number: ")) n3 = int(input("Enter third number: ")) print(f"{max(n1, n2, n3)} is the biggest number") 1 اقتباس
0 بلال زيادة نشر 2 سبتمبر أرسل تقرير نشر 2 سبتمبر الكودين شغالين ومنطقهم صحيح لما الأرقام الثلاثة مختلفة عن بعض، بس فيه فرق مهم بينهم لما يكون فيه رقمين متساويين (تعادل) كود صاحبك الأول (elif مع and) if n1>n2 and n1>n3: ... elif n2>n1 and n2>n3: ... elif n3>n1 and n3>n2: ... كل شرط هنا بيتطلب إن الرقم يكون أكبر بشكل صارم strict من الرقمين الباقيين. فلو مثلاً n1 = n2 = 5 و n3 = 3، ولا شرط من الثلاثة بيتحقق (لأن ولا رقم أكبر من الاثنين الباقيين بشكل صارم)، والنتيجة إن البرنامج ما يطبع أي شيء إطلاقا فيه هنا حالة (bug) ناقصة. كودك الثاني (if/else متداخلة) if first_num > second_num: if first_num > third_num: ... else: ... else: if second_num > third_num: ... else: ... هنا البنية if/else شاملة لكل الاحتمالات (exhaustive)، يعني دايما رح يدخل بمسار وينفذ print حتى لو فيه تعادل بين رقمين. في حالة التعادل هيطبع أحد الرقمين المتساويين كـالأكبر، وهذا منطقي لأنهم فعلاً الأكبر (حتى لو متساويين). اقتباس
0 محمد عاطف25 نشر 3 سبتمبر أرسل تقرير نشر 3 سبتمبر الكودين صحيحين ولكن هناك بعض الملاحظات . في الكود الأول الكود بالفعل صحيح ولكنه لا يغطي جميع الإحتمالات وأيضا الكود ليس سهل القراءة بشكل جيد فمن يراه لن يفهم ما الذي يفعله . أما الكود الثاني فهو منظم أكثر وأيضا يغطي جميع الإحتمالات وسهل القراءة والفهم . والكود الأول تفكيره سليم ومنطقي جدا ينقص فقط وضع إحتمالات تساوى الأرقام وكان كل شئ سيعمل بشكل جيد. اقتباس
0 بدر عبدالكريم عبدالجبار نشر 3 سبتمبر الكاتب أرسل تقرير نشر 3 سبتمبر بتاريخ 15 ساعة قال محمد عاطف25: الكودين صحيحين ولكن هناك بعض الملاحظات . في الكود الأول الكود بالفعل صحيح ولكنه لا يغطي جميع الإحتمالات وأيضا الكود ليس سهل القراءة بشكل جيد فمن يراه لن يفهم ما الذي يفعله . أما الكود الثاني فهو منظم أكثر وأيضا يغطي جميع الإحتمالات وسهل القراءة والفهم . والكود الأول تفكيره سليم ومنطقي جدا ينقص فقط وضع إحتمالات تساوى الأرقام وكان كل شئ سيعمل بشكل جيد. مرحبا كيف أضع احتمالات تساوي الارقام في الكود الأول لو سمحت ؟ اقتباس
0 محمد عاطف25 نشر 3 سبتمبر أرسل تقرير نشر 3 سبتمبر بتاريخ 10 دقائق مضت قال بدر عبدالكريم عبدالجبار: مرحبا كيف أضع احتمالات تساوي الارقام في الكود الأول لو سمحت ؟ هذا هو الكود بعد إضافة إحتمالات تساوي الأرقام : n1 = int(input("Enter first number: ")) n2 = int(input("Enter second number: ")) n3 = int(input("Enter third number: ")) if n1 > n2 and n1 > n3: print(f"{n1} is the biggest number") elif n2 > n1 and n2 > n3: print(f"{n2} is the biggest number") elif n3 > n1 and n3 > n2: print(f"{n3} is the biggest number") elif n1 == n2 and n1 > n3: print(f"The first and second numbers are equal and are the biggest: {n1}") elif n1 == n3 and n1 > n2: print(f"The first and third numbers are equal and are the biggest: {n1}") elif n2 == n3 and n2 > n1: print(f"The second and third numbers are equal and are the biggest: {n2}") elif n1 == n2 == n3: print(f"All three numbers are equal: {n1}") 1 اقتباس
السؤال
بدر عبدالكريم عبدالجبار
السلام عليكم
انا و صديقي كنا نعمل مشروع معرفة الرقم الاكبر من بين ٣ ارقام مختلفة ، كل واحد مننا كتب الكود بشكل مختلف ، من منا الصح ؟
6 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.