جمع عناصر List في بايثون باستخدام sum وfor | بايثون بالمثال 4

بايثون بالمثال 4 حساب مجموع عناصر List في Python باستخدام sum و for loop

إذا كنت تريد حساب مجموع عناصر List في بايثون، فأسهل حل غالبًا هو استخدام الدالة الجاهزة sum(). لكن فهم طريقة الجمع يدويًا باستخدام for loop مهم أيضًا؛ لأنه يوضح لك كيف تتغير قيمة المجموع خطوة بخطوة داخل الحلقة.

في هذا الدرس الرابع من سلسلة بايثون بالمثال سنجمع عناصر قائمة رقمية باستخدام sum()، ثم نكرر الفكرة باستخدام for و+=. وسنرى أيضًا ماذا يحدث مع القائمة الفارغة، والقائمة التي تحتوي أرقامًا مكتوبة كنصوص، وكيف نحسب المجموع من إدخال المستخدم.

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

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

{alertInfo} الخلاصة السريعة: استخدم sum() عندما تريد مجموع قيم رقمية مباشرة، واستخدم for loop عندما تريد فهم خطوات الجمع أو تنفيذ منطق إضافي أثناء المرور على العناصر.

قبل البدء، يفضّل أن تكون مرتاحًا مع القوائم Lists في بايثون و الحلقات Loops. ويمكنك تجربة الأمثلة داخل محرر بايثون العرب.

كيف أحسب مجموع عناصر List في بايثون؟

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

numbers = [10, 20, 30, 40]

نريد الحصول على:

100

أي أن بايثون ستجمع القيم الأربع:

10 + 20 + 30 + 40
قائمة أرقام في Python يتم جمع عناصرها للحصول على الناتج النهائي

الطريقة الأولى: استخدام sum() لجمع عناصر القائمة

الدالة sum() هي الطريقة الأبسط عندما تحتوي القائمة على قيم رقمية وتريد مجموعها مباشرة:

numbers = [10, 20, 30, 40]

total = sum(numbers)

print(total)

الناتج:

100

تأخذ sum() العناصر من الـiterable وتعيد مجموعها. والقيمة الابتدائية الافتراضية للمجموع هي 0.

استخدام دالة sum في Python لحساب مجموع عناصر List بطريقة مباشرة
{alertSuccess} إذا كان المطلوب مجرد جمع قائمة أرقام، فـsum() هي الحل الذي ينبغي أن تبدأ به بدل كتابة حلقة يدويًا بلا حاجة.

ماذا تعيد sum() مع قائمة فارغة؟

القائمة الفارغة لا تسبب خطأ مع sum(). لأن قيمة البداية الافتراضية هي صفر:

numbers = []

print(sum(numbers))

الناتج:

0

هذه نقطة تختلف عن دوال مثل max() وmin() التي تحتاج إلى وجود عنصر للمقارنة إذا لم تُعطَ قيمة افتراضية مناسبة.

الطريقة الثانية: جمع عناصر List باستخدام for loop

رغم أن sum() هي الطريقة المباشرة، فإن كتابة الجمع يدويًا تساعدك على فهم فكرة المتغير المتراكم Accumulator:

numbers = [10, 20, 30, 40]

total = 0

for number in numbers:
    total = total + number

print(total)

الناتج:

100

كيف تتغير قيمة total؟

الدورة number total بعد الجمع
الأولى 10 10
الثانية 20 30
الثالثة 30 60
الرابعة 40 100
شرح زيادة قيمة total داخل for loop عند جمع عناصر قائمة في Python

استخدام += بدل total = total + number

يمكنك اختصار هذا السطر:

total = total + number

إلى:

total += number

فيصبح البرنامج:

numbers = [10, 20, 30, 40]
total = 0

for number in numbers:
    total += number

print(total)
{alertInfo} += ليست طريقة ثالثة مختلفة لحساب المجموع؛ هي فقط صيغة مختصرة لتحديث قيمة total داخل الحلقة.

sum() أم for loop: أيهما أستخدم؟

الحالة الأنسب السبب
جمع قائمة أرقام مباشرة sum() أقصر وأوضح ويعبّر عن الهدف مباشرة.
تعلم طريقة تراكم المجموع for loop توضح كيف تتغير القيمة في كل دورة.
تطبيق شرط أو منطق إضافي أثناء الجمع for loop أو تعبير مناسب تمنحك تحكمًا في كل عنصر قبل إضافته.
مقارنة بين sum و for loop و += لحساب مجموع عناصر List في Python

جمع الأعداد الصحيحة والعشرية

يمكن أن تحتوي القائمة على int وfloat معًا:

values = [10, 20.5, 4.25]

total = sum(values)

print(total)

الناتج:

34.75

إذا كنت تتعامل مع أعداد عشرية، فتذكر أن float لها قواعد الدقة العشرية المعتادة في الحاسوب؛ لكن ذلك موضوع منفصل عن فكرة جمع القائمة نفسها.

لماذا تفشل sum() إذا كانت بعض الأرقام نصوصًا؟

هذا المثال لا يمثل قائمة رقمية كاملة:

values = [10, "20", 30]

print(sum(values))

القيمة "20" من النوع str وليست رقمًا. لذلك يجب تحويل القيم النصية الرقمية قبل جمعها.

numbers = ["10", "20", "30"]

converted = []

for number in numbers:
    converted.append(int(number))

print(sum(converted))

الناتج:

60

إذا كان أحد النصوص لا يمثل عددًا صحيحًا، فقد يظهر ValueError. عندها راجع حل خطأ ValueError invalid literal for int في بايثون.

هل يمكن استخدام sum() لدمج النصوص؟

لا تستخدم sum() لجمع قائمة نصوص مثل:

words = ["Arab", "Python"]

sum() موجهة أساسًا للجمع الرقمي. إذا أردت دمج النصوص فالأداة المناسبة عادة هي join():

words = ["Arab", "Python"]

print(" ".join(words))

الناتج:

Arab Python

حساب مجموع أرقام يدخلها المستخدم

لنجعل المثال أكثر عملية. سيكتب المستخدم أرقامًا مفصولة بمسافات:

user_input = input("Enter numbers separated by spaces: ")

parts = user_input.split()
numbers = []

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

print("Total:", sum(numbers))

إذا أدخل:

10 20 30

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

Total: 60

بعد أن تتعلم List Comprehension في بايثون يمكنك كتابة خطوة التحويل بصورة أقصر، لكن الحلقة العادية أوضح في هذه المرحلة لفهم كل خطوة.

مثال عملي: مجموع الدرجات وحساب المتوسط

grades = [80, 90, 75, 85]

total = sum(grades)
average = total / len(grades)

print("Total:", total)
print("Average:", average)

الناتج:

Total: 330
Average: 82.5

لاحظ أن حساب المتوسط بقسمة المجموع على len(grades) يحتاج إلى قائمة غير فارغة؛ لأن القسمة على صفر ستسبب خطأ.

أخطاء شائعة عند جمع عناصر List

1. وضع نص داخل قائمة الأرقام

تأكد من نوع البيانات قبل الجمع. القيمة "20" نص، بينما 20 عدد.

2. نسيان total = 0 مع الحلقة

إذا كنت تستخدم for loop وتريد تراكم المجموع، يجب أن تبدأ بقيمة مناسبة:

total = 0

3. وضع print داخل الحلقة دون قصد

إذا كان print(total) داخل الحلقة، فسترى المجموع بعد كل دورة:

numbers = [10, 20, 30]
total = 0

for number in numbers:
    total += number
    print(total)

أما إذا أردت النتيجة النهائية فقط، فضع print(total) بعد انتهاء الحلقة.

{alertWarning} المسافة البادئة تغير معنى البرنامج. سطر print داخل الحلقة ينفذ في كل دورة، وخارج الحلقة ينفذ مرة واحدة بعد اكتمال الجمع.

أسئلة شائعة

ما أسرع طريقة لحساب مجموع List في بايثون؟

استخدم sum(numbers) عندما تكون لديك قيم رقمية وتريد مجموعها مباشرة.

ماذا تعيد sum([])؟

تعيد 0 لأن قيمة البداية الافتراضية في sum() هي صفر.

هل sum تعمل مع int وfloat معًا؟

نعم، يمكن جمع قيم رقمية صحيحة وعشرية في نفس iterable.

لماذا يظهر TypeError عند استخدام sum؟

من الأسباب الشائعة وجود قيمة غير رقمية مثل str داخل البيانات التي تحاول جمعها.

متى أستخدم for بدل sum؟

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

روابط مفيدة من بايثون العرب

الخلاصة

لحساب مجموع عناصر List في بايثون، ابدأ بـsum() عندما تكون البيانات رقمية وتريد النتيجة مباشرة. وإذا كنت تتعلم الحلقات أو تحتاج إلى تنفيذ خطوات إضافية أثناء المرور على العناصر، فاستخدم for loop ومتغيرًا مثل total.

وتذكر أن += ليست طريقة مستقلة للجمع، بل اختصار لتحديث قيمة المجموع داخل الحلقة. كما أن القائمة الفارغة تعطي 0 مع sum()، بينما القيم النصية يجب تحويلها إلى أرقام قبل جمعها.

{alertSuccess} اختر أبسط أداة تعبّر عن هدفك: sum() للمجموع المباشر، وfor عندما تحتاج إلى تحكم إضافي.

المثال التالي في السلسلة

بعد أن تعلمت حساب المجموع، انتقل إلى بايثون بالمثال 5: إيجاد أكبر وأصغر رقم في List باستخدام Python لتتعلم استخدام max() وmin() ثم تنفيذ الفكرة يدويًا باستخدام الحلقة.

تمرين بسيط لك

أنشئ قائمة أسعار، ثم اطبع مجموعها باستخدام sum(). بعد ذلك اكتب الحل مرة ثانية باستخدام for loop و+= وتأكد أن النتيجتين متساويتان.

prices = [25, 40, 15, 20]

إرسال تعليق

أحدث أقدم