بايثون بالمثال 8: إيجاد أكبر وأصغر رقم في قائمة باستخدام Python

شرح إيجاد أكبر وأصغر رقم في قائمة Python باستخدام max و min بطريقة مبسطة للمبتدئين

مرحبًا بك في درس جديد من سلسلة بايثون بالمثال على موقع بايثون العرب. في هذا المقال سنتعلم مثالًا عمليًا مهمًا جدًا للمبتدئين، وهو إيجاد أكبر وأصغر رقم في قائمة باستخدام Python.

هذا المثال يظهر كثيرًا في التمارين البرمجية، لأنه يعلّمك كيف تتعامل مع List، وكيف تستخدم الدوال الجاهزة مثل max() و min()، وكيف تفكر في الحل يدويًا باستخدام for loop.

في نهاية المقال ستكون قادرًا على استخراج أكبر قيمة وأصغر قيمة من قائمة أرقام، وفهم الفرق بين الحل المختصر بالدوال الجاهزة والحل اليدوي باستخدام الحلقة.

{getToc} $title={محتوى المقال}

{alertInfo} هذا المثال مناسب جدًا بعد تعلم القوائم Lists والحلقات Loops، لأنه يجمع بين التفكير البرمجي والحل العملي المختصر.

فكرة المثال ببساطة

لنفترض أن لدينا قائمة درجات أو أرقام:

numbers = [15, 8, 22, 4, 19]

نريد أن نعرف:

  • ما هو أكبر رقم في القائمة؟
  • ما هو أصغر رقم في القائمة؟

في هذه القائمة، أكبر رقم هو 22، وأصغر رقم هو 4.

شرح فكرة البحث عن أكبر وأصغر رقم داخل قائمة Python بطريقة مبسطة للمبتدئين

الطريقة الأولى: استخدام max لإيجاد أكبر رقم

أسهل طريقة لإيجاد أكبر رقم في قائمة هي استخدام الدالة الجاهزة max().

numbers = [15, 8, 22, 4, 19]

largest = max(numbers)

print("أكبر رقم هو:", largest)

الناتج:

أكبر رقم هو: 22

الدالة max() تمر على عناصر القائمة وتعيد أكبر قيمة موجودة فيها.

{alertSuccess} إذا أردت الحل المختصر والسريع، استخدم max() لإيجاد أكبر رقم داخل القائمة.

الطريقة الثانية: استخدام min لإيجاد أصغر رقم

بنفس الطريقة، يمكن استخدام الدالة min() لإيجاد أصغر رقم داخل القائمة.

numbers = [15, 8, 22, 4, 19]

smallest = min(numbers)

print("أصغر رقم هو:", smallest)

الناتج:

أصغر رقم هو: 4

الدالة min() تعمل بعكس max()، فهي ترجع أصغر قيمة داخل القائمة.

مثال يوضح استخدام دالتي max و min في Python للحصول على أكبر وأصغر قيمة داخل List

إيجاد أكبر وأصغر رقم معًا

يمكننا استخدام max() و min() معًا في نفس البرنامج:

numbers = [15, 8, 22, 4, 19]

largest = max(numbers)
smallest = min(numbers)

print("أكبر رقم:", largest)
print("أصغر رقم:", smallest)

الناتج:

أكبر رقم: 22
أصغر رقم: 4

هذه هي أبسط نسخة من البرنامج، وهي مناسبة جدًا عندما تريد حلًا مباشرًا وواضحًا.

لماذا نتعلم الحل باستخدام for loop؟

قد تسأل: إذا كانت max() و min() تحلان المشكلة بسهولة، فلماذا نتعلم الحل باستخدام for loop؟

السبب أن الحل اليدوي يساعدك على فهم كيف تفكر بايثون خلف الكواليس. كما أن بعض التمارين التعليمية قد تطلب منك حل المشكلة بدون استخدام الدوال الجاهزة.

{alertInfo} استخدم max و min في المشاريع العملية، لكن تعلم طريقة for loop حتى تفهم منطق المقارنة خطوة بخطوة.

إيجاد أكبر رقم باستخدام for loop

في هذه الطريقة سنفترض أن أول رقم في القائمة هو الأكبر، ثم نقارن بقية الأرقام معه.

numbers = [15, 8, 22, 4, 19]

largest = numbers[0]

for number in numbers:
    if number > largest:
        largest = number

print("أكبر رقم هو:", largest)

الناتج:

أكبر رقم هو: 22

شرح كود أكبر رقم خطوة بخطوة

في البداية كتبنا:

largest = numbers[0]

أي أننا افترضنا أن أول عنصر في القائمة هو الأكبر مؤقتًا.

ثم مررنا على كل رقم في القائمة:

for number in numbers:

وفي كل مرة نسأل: هل الرقم الحالي أكبر من أكبر رقم وجدناه حتى الآن؟

if number > largest:

إذا كان أكبر، نقوم بتحديث قيمة largest.

شرح إيجاد أكبر وأصغر رقم في قائمة Python باستخدام for loop خطوة بخطوة

إيجاد أصغر رقم باستخدام for loop

بنفس الفكرة، يمكن إيجاد أصغر رقم داخل القائمة. لكن هذه المرة سنستخدم المقارنة < بدل >.

numbers = [15, 8, 22, 4, 19]

smallest = numbers[0]

for number in numbers:
    if number < smallest:
        smallest = number

print("أصغر رقم هو:", smallest)

الناتج:

أصغر رقم هو: 4

الفرق الوحيد تقريبًا هو أن أكبر رقم نبحث عنه باستخدام >، أما أصغر رقم فنبحث عنه باستخدام <.

إيجاد أكبر وأصغر رقم داخل نفس الحلقة

يمكن تحسين الكود قليلًا واستخراج أكبر وأصغر رقم في نفس الحلقة بدل المرور على القائمة مرتين.

numbers = [15, 8, 22, 4, 19]

largest = numbers[0]
smallest = numbers[0]

for number in numbers:
    if number > largest:
        largest = number

    if number < smallest:
        smallest = number

print("أكبر رقم:", largest)
print("أصغر رقم:", smallest)

الناتج:

أكبر رقم: 22
أصغر رقم: 4

هذه الطريقة مفيدة عندما تريد فهم المقارنة، أو عندما تريد تنفيذ منطق إضافي أثناء المرور على القائمة.

مقارنة بين max و min و for loop

الطريقة مثال مختصر متى تستخدمها؟
max() max(numbers) لإيجاد أكبر قيمة بسرعة.
min() min(numbers) لإيجاد أصغر قيمة بسرعة.
for loop المقارنة عنصرًا عنصرًا لفهم المنطق أو عند الحاجة لتخصيص طريقة المقارنة.

ماذا يحدث إذا كانت القائمة فارغة؟

إذا استخدمت max() أو min() مع قائمة فارغة، سيظهر خطأ لأن بايثون لا تجد عناصر تقارن بينها.

numbers = []

print(max(numbers))

سيظهر خطأ من نوع ValueError لأن القائمة فارغة.

الحل الأفضل هو التأكد من أن القائمة ليست فارغة قبل استخدام max() أو min().

numbers = []

if numbers:
    print("أكبر رقم:", max(numbers))
    print("أصغر رقم:", min(numbers))
else:
    print("القائمة فارغة")
{alertWarning} قبل استخدام max أو min، تأكد أن القائمة تحتوي على عناصر، لأن القائمة الفارغة لا يوجد فيها أكبر أو أصغر قيمة.

مثال عملي: أكبر وأصغر درجة طالب

لنفترض أن لدينا قائمة درجات طالب في عدة اختبارات، ونريد استخراج أعلى درجة وأقل درجة.

scores = [88, 73, 95, 60, 81]

highest_score = max(scores)
lowest_score = min(scores)

print("أعلى درجة:", highest_score)
print("أقل درجة:", lowest_score)

الناتج:

أعلى درجة: 95
أقل درجة: 60

هذا مثال واقعي ومفيد جدًا، لأنك ستحتاج كثيرًا إلى استخراج أعلى وأقل قيمة من بيانات مثل الدرجات، الأسعار، الأعمار، أو المبيعات.

استخدام input لإدخال الأرقام من المستخدم

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

text = input("أدخل الأرقام مفصولة بمسافات: ")

parts = text.split()
numbers = []

for part in parts:
    numbers.append(int(part))

print("أكبر رقم:", max(numbers))
print("أصغر رقم:", min(numbers))

إذا أدخل المستخدم:

10 5 30 2

سيكون الناتج:

أكبر رقم: 30
أصغر رقم: 2

نسخة مختصرة باستخدام list comprehension

بعد فهم الخطوات السابقة، يمكن كتابة تحويل الإدخال إلى أرقام بطريقة مختصرة:

numbers = [int(x) for x in input("أدخل الأرقام: ").split()]

print("أكبر رقم:", max(numbers))
print("أصغر رقم:", min(numbers))

هذه الطريقة مختصرة، لكنها قد تكون أصعب قليلًا على المبتدئ. لذلك الأفضل أن تفهم النسخة الطويلة أولًا.

ملخص طرق إيجاد أكبر وأصغر رقم في قائمة Python باستخدام max و min و الحلقات

أخطاء شائعة عند إيجاد أكبر وأصغر رقم

الخطأ الأول: استخدام max مع قائمة فارغة

هذا الكود يسبب خطأ:

numbers = []

print(max(numbers))

لأن القائمة لا تحتوي على أي رقم.

الخطأ الثاني: نسيان تحويل input إلى int

الدالة input() ترجع نصًا، حتى لو أدخل المستخدم رقمًا. لذلك إذا أردت المقارنة كأرقام، يجب التحويل إلى int.

number = input("أدخل رقمًا: ")

هنا number نص وليس رقمًا. الأفضل:

number = int(input("أدخل رقمًا: "))

الخطأ الثالث: وضع أكبر رقم بقيمة ثابتة غير مناسبة

بعض المبتدئين يكتبون:

largest = 0

هذا قد يسبب نتيجة خاطئة إذا كانت كل الأرقام سالبة. الأفضل أن تجعل البداية من أول عنصر في القائمة:

largest = numbers[0]
{alertWarning} عند الحل اليدوي، لا تبدأ دائمًا من 0. الأفضل أن تبدأ من أول عنصر داخل القائمة حتى يعمل الكود مع الأرقام السالبة أيضًا.

جدول سريع لأهم الأكواد

المطلوب الكود الشرح
أكبر رقم max(numbers) يرجع أكبر قيمة داخل القائمة.
أصغر رقم min(numbers) يرجع أصغر قيمة داخل القائمة.
أول عنصر numbers[0] مفيد كبداية في الحل اليدوي.
المرور على القائمة for number in numbers يمر على الأرقام رقمًا رقمًا.

أسئلة شائعة عن max و min في Python

ما وظيفة max في Python؟

الدالة max() ترجع أكبر قيمة داخل قائمة أو أي كائن قابل للتكرار يحتوي على قيم قابلة للمقارنة.

ما وظيفة min في Python؟

الدالة min() ترجع أصغر قيمة داخل القائمة أو الكائن القابل للتكرار.

هل تعمل max و min مع النصوص؟

نعم، يمكن أن تعمل مع النصوص، لكن المقارنة هنا تكون حسب الترتيب الأبجدي وقيم Unicode، وليس كأرقام.

هل يمكن استخدام max مع قائمة فارغة؟

لا. إذا كانت القائمة فارغة سيظهر خطأ، لذلك يجب التأكد من وجود عناصر داخل القائمة قبل استخدام max() أو min().

ما الأفضل: max و min أم for loop؟

في الاستخدام العملي، max() و min() أفضل وأقصر. أما for loop فهي ممتازة للتعلم وفهم المنطق.

روابط مفيدة

الخلاصة

في هذا الدرس تعلمنا كيف نوجد أكبر وأصغر رقم في قائمة باستخدام Python. أبسط حل هو استخدام max() للحصول على أكبر رقم، و min() للحصول على أصغر رقم.

وتعلمنا أيضًا كيف نحل نفس المشكلة يدويًا باستخدام for loop، حتى نفهم طريقة المقارنة خطوة بخطوة.

الكود المختصر هو:

largest = max(numbers)
smallest = min(numbers)
{alertSuccess} الخلاصة السريعة: استخدم max لإيجاد أكبر رقم، و min لإيجاد أصغر رقم، وتعلم for loop لفهم منطق المقارنة.

تمرين بسيط لك

اكتب برنامجًا يحتوي على قائمة درجات، ثم يطبع:

  • أعلى درجة.
  • أقل درجة.
  • الفرق بين أعلى درجة وأقل درجة.

ابدأ بهذا الكود:

scores = [70, 85, 90, 60]

highest = max(scores)
lowest = min(scores)

print("أعلى درجة:", highest)
print("أقل درجة:", lowest)
print("الفرق:", highest - lowest)

إرسال تعليق

أحدث أقدم