في هذا الدرس من سلسلة بايثون بالمثال سنتعلم مثالًا عمليًا مهمًا جدًا: كيف نحسب متوسط الأرقام داخل List في Python.
فكرة المتوسط نحتاجها كثيرًا في البرامج البسيطة، مثل حساب متوسط درجات الطلاب، متوسط الأسعار، متوسط عدد المشاهدات، أو متوسط أي مجموعة أرقام.
سنستخدم في هذا المثال دالتين مهمتين في Python: الدالة sum() لجمع عناصر القائمة، والدالة len() لمعرفة عدد العناصر.
{getToc} $title={محتوى المقال}
{alertInfo} هذا الدرس مناسب جدًا للمبتدئين لأنه يجمع بين Lists و sum و len في مثال عملي واضح.
فكرة المثال ببساطة
لدينا قائمة أرقام مثل هذه:
numbers = [10, 20, 30, 40, 50]
ونريد حساب المتوسط.
المتوسط يعني:
المتوسط = مجموع الأرقام ÷ عدد الأرقام
في قائمتنا:
- مجموع الأرقام = 150
- عدد الأرقام = 5
- المتوسط = 150 ÷ 5 = 30
حساب المتوسط باستخدام sum و len
في Python يمكننا حساب المتوسط بطريقة سهلة باستخدام:
sum(numbers)لحساب مجموع عناصر القائمة.len(numbers)لحساب عدد العناصر داخل القائمة.
الكود:
numbers = [10, 20, 30, 40, 50]
average = sum(numbers) / len(numbers)
print(average)
الناتج:
30.0
لاحظ أن الناتج ظهر 30.0 وليس 30، لأن عملية القسمة في Python غالبًا ترجع رقمًا عشريًا.
{alertSuccess} أسهل طريقة لحساب متوسط قائمة أرقام في Python هي: sum(list) / len(list)
شرح الكود خطوة بخطوة
لنشرح السطر المهم:
average = sum(numbers) / len(numbers)
هذا السطر يعمل كالتالي:
sum(numbers)تجمع كل الأرقام داخل القائمة.len(numbers)تحسب عدد العناصر.- علامة
/تقسم المجموع على عدد العناصر. - الناتج يتم تخزينه داخل المتغير
average.
مثال عملي: حساب متوسط درجات الطلاب
لنفترض أن لدينا درجات طالب في عدة اختبارات، ونريد حساب متوسطه.
grades = [80, 90, 75, 85]
average = sum(grades) / len(grades)
print("متوسط الدرجات هو:", average)
الناتج:
متوسط الدرجات هو: 82.5
بهذه الطريقة يمكننا استخدام Python في حسابات بسيطة ومفيدة في الحياة اليومية.
تقريب الناتج باستخدام round
أحيانًا يظهر المتوسط بعدد طويل من الأرقام العشرية، وهنا يمكننا استخدام round() لتقريب النتيجة.
numbers = [10, 20, 25]
average = sum(numbers) / len(numbers)
print(round(average, 2))
الناتج:
18.33
هنا استخدمنا round(average, 2) حتى نجعل الناتج يظهر برقمين بعد الفاصلة فقط.
ماذا لو كانت القائمة فارغة؟
إذا كانت القائمة فارغة، فستحدث مشكلة عند القسمة على عدد العناصر، لأن عدد العناصر سيكون صفرًا.
مثال خاطئ:
numbers = []
average = sum(numbers) / len(numbers)
print(average)
في هذا المثال سيظهر خطأ لأننا نحاول القسمة على صفر.
{alertError} لا تحسب المتوسط لقائمة فارغة؛ لأن len ستكون 0، والقسمة على صفر تسبب خطأ.
الحل: التأكد من أن القائمة ليست فارغة
الحل الأفضل هو استخدام شرط قبل حساب المتوسط.
numbers = []
if numbers:
average = sum(numbers) / len(numbers)
print(average)
else:
print("القائمة فارغة، لا يمكن حساب المتوسط")
الناتج:
القائمة فارغة، لا يمكن حساب المتوسط
هذا يجعل البرنامج أكثر أمانًا، لأنه يتعامل مع الحالة الفارغة بدل أن يتوقف بسبب الخطأ.
{alertWarning} قبل حساب المتوسط، اسأل نفسك: هل القائمة تحتوي على عناصر فعلًا؟
وضع حساب المتوسط داخل دالة
يمكننا جعل الكود أفضل عن طريق وضعه داخل دالة، حتى نستخدمه أكثر من مرة.
def calculate_average(numbers):
if not numbers:
return None
return sum(numbers) / len(numbers)
result = calculate_average([10, 20, 30])
print(result)
الناتج:
20.0
في هذا المثال، الدالة calculate_average تستقبل قائمة أرقام، ثم ترجع المتوسط.
إذا كانت القائمة فارغة، ترجع None بدل أن تسبب خطأ.
طباعة رسالة واضحة للمستخدم
يمكننا تحسين المثال السابق حتى نطبع رسالة مفهومة إذا لم يتم حساب المتوسط.
def calculate_average(numbers):
if not numbers:
return None
return sum(numbers) / len(numbers)
grades = [90, 85, 95]
average = calculate_average(grades)
if average is not None:
print("المتوسط هو:", average)
else:
print("لا توجد أرقام لحساب المتوسط")
الناتج:
المتوسط هو: 90.0
هذا المثال أفضل من مجرد طباعة الناتج مباشرة، لأنه يتعامل مع أكثر من حالة.
جدول مختصر للدوال المستخدمة
| الدالة | وظيفتها | مثال |
|---|---|---|
sum() |
جمع عناصر القائمة | sum([10, 20, 30]) |
len() |
حساب عدد العناصر | len([10, 20, 30]) |
round() |
تقريب الناتج | round(18.333, 2) |
أخطاء شائعة عند حساب المتوسط في Python
1. نسيان استخدام len
بعض المبتدئين يجمعون الأرقام فقط وينسون القسمة على عدد العناصر، وهذا يعطي المجموع وليس المتوسط.
2. القسمة على قائمة فارغة
إذا كانت القائمة فارغة، فإن len(numbers) تساوي صفرًا، والقسمة على صفر تسبب خطأ.
3. استخدام أرقام داخل نصوص
إذا كانت الأرقام مكتوبة كنصوص مثل "10" و "20"، فقد تحتاج إلى تحويلها إلى أرقام قبل الحساب.
numbers = ["10", "20", "30"]
numbers = [int(number) for number in numbers]
average = sum(numbers) / len(numbers)
print(average)
الناتج:
20.0
{alertInfo} إذا كانت الأرقام قادمة من input أو ملف خارجي، تأكد أنها أرقام فعلية وليست نصوصًا.
تمرين بسيط
جرّب حساب متوسط الأرقام التالية:
numbers = [15, 25, 35, 45]
الحل:
numbers = [15, 25, 35, 45]
average = sum(numbers) / len(numbers)
print(average)
الناتج:
30.0
أسئلة شائعة
كيف أحسب متوسط قائمة أرقام في Python؟
استخدم sum(numbers) / len(numbers)، حيث sum تجمع الأرقام و len تحسب عددها.
ما الفرق بين sum و len؟
sum تحسب مجموع عناصر القائمة، أما len فتحسب عدد العناصر داخل القائمة.
لماذا يظهر المتوسط برقم عشري؟
لأن القسمة باستخدام / في Python ترجع غالبًا رقمًا عشريًا حتى لو كانت النتيجة بدون كسور.
ماذا يحدث إذا كانت القائمة فارغة؟
سيظهر خطأ بسبب القسمة على صفر، لذلك يجب التأكد من أن القائمة تحتوي على عناصر قبل حساب المتوسط.
روابط مهمة من بايثون العرب
- أساسيات بايثون 8: شرح القوائم Lists في Python
- بايثون بالمثال 4: حساب مجموع عناصر List في Python
- أساسيات بايثون 14: شرح return في Functions
مصدر خارجي مفيد
يمكنك قراءة توثيق Python الرسمي حول الدالة sum من هنا:
Python Documentation - sum.
خلاصة المقال
في هذا الدرس تعلمنا كيف نحسب متوسط الأرقام داخل List في Python باستخدام sum و len.
الفكرة بسيطة: نجمع عناصر القائمة، ثم نقسم الناتج على عدد العناصر.
وتعلمنا أيضًا كيف نتعامل مع القائمة الفارغة، وكيف نضع حساب المتوسط داخل دالة حتى يصبح الكود أنظف وأسهل في إعادة الاستخدام.
{alertSuccess} قاعدة بسيطة: المتوسط = sum(list) / len(list)، لكن تأكد أولًا أن القائمة ليست فارغة.