اذهب إلى المحتوى

السؤال

نشر

السلام عليكم

انا و صديقي كنا نعمل مشروع معرفة الرقم الاكبر من بين ٣ ارقام مختلفة ، كل واحد مننا كتب الكود بشكل مختلف ، من منا الصح ؟

Screenshot 2026-09-01 at 4.52.27 PM.png

Screenshot 2026-09-01 at 4.52.10 PM.png

Recommended Posts

  • 0
نشر

كلا الكودين صحيحان تماما من الناحية البرمجية وكلاهما سيعطيك النتيجة المطلوبة وهي معرفة الرقم الاكبر بين الارقام الثلاثة. الكود الاول يعتمد على استخدام المعامل and للتحقق من شرطين معا في جملة if واحدة وهذا يجعل الكود مختصرا وسهل القراءة. الكود الثاني يعتمد على الشروط المتداخلة باستخدام if و else وهو اسلوب تعليمي جيد يوضح كيفية تسلسل المنطق وتجربة جميع الاحتمالات للوصول للنتيجة. لا يوجد كود خطا بينهما ولكن في العادة يفضل المبرمجون الطريقة الاكثر اختصارا ووضوحا كما في المثال الاول لسهولة صيانتها مستقبلا. يمكنك ايضا في بايثون استخدام دالة max للوصول للنتيجة بشكل مباشر ومختصر جدا.

result = max(n1, n2, n3)

print(result)
  • 0
نشر

الطريقة الثانية أفضل لكونها تتعامل مع كل الحالات، ففي الطريقة الأولى استخدمت 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")

 

  • 0
نشر

الكودين شغالين ومنطقهم صحيح لما الأرقام الثلاثة مختلفة عن بعض، بس فيه فرق مهم بينهم لما يكون فيه رقمين متساويين (تعادل) 

كود صاحبك الأول (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
نشر

الكودين صحيحين ولكن هناك بعض الملاحظات .

في الكود الأول الكود بالفعل صحيح ولكنه لا يغطي جميع الإحتمالات وأيضا الكود ليس سهل القراءة بشكل جيد فمن يراه لن يفهم ما الذي يفعله .

أما الكود الثاني فهو منظم أكثر وأيضا يغطي جميع الإحتمالات وسهل القراءة والفهم .

والكود الأول تفكيره سليم ومنطقي جدا ينقص فقط وضع إحتمالات تساوى الأرقام وكان كل شئ سيعمل بشكل جيد.

  • 0
نشر
بتاريخ 15 ساعة قال محمد عاطف25:

الكودين صحيحين ولكن هناك بعض الملاحظات .

في الكود الأول الكود بالفعل صحيح ولكنه لا يغطي جميع الإحتمالات وأيضا الكود ليس سهل القراءة بشكل جيد فمن يراه لن يفهم ما الذي يفعله .

أما الكود الثاني فهو منظم أكثر وأيضا يغطي جميع الإحتمالات وسهل القراءة والفهم .

والكود الأول تفكيره سليم ومنطقي جدا ينقص فقط وضع إحتمالات تساوى الأرقام وكان كل شئ سيعمل بشكل جيد.

مرحبا

كيف أضع احتمالات تساوي الارقام في الكود الأول لو سمحت ؟

  • 0
نشر
بتاريخ 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}")

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...