بايثون بالمثال 3: حساب عدد الكلمات في نص باستخدام Python

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

هذا المثال يبدو صغيرًا، لكنه يعلّمك أكثر من فكرة مهمة في نفس الوقت: التعامل مع النصوص، إدخال المستخدم، تحويل النص إلى قائمة كلمات، واستخدام دوال جاهزة مثل split() و len(). لذلك يعتبر من أفضل الأمثلة التي تساعدك على فهم كيف تفكر بايثون عند معالجة النصوص.

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

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

{alertInfo} هذا المثال مناسب جدًا للمبتدئين لأنه يربط بين النصوص Strings والقوائم Lists والدوال الجاهزة في بايثون بطريقة عملية.

ما فكرة برنامج حساب عدد الكلمات؟

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

I love Python

ثم تخبرنا أن عدد الكلمات هو:

3

ولكي نفعل ذلك، سنحتاج إلى ثلاث خطوات رئيسية:

  1. نحصل على النص من المستخدم أو نكتبه داخل متغير.
  2. نقسم النص إلى كلمات باستخدام split().
  3. نحسب عدد الكلمات باستخدام len().

الكود الأول لحساب عدد الكلمات

لنبدأ بأبسط نسخة من البرنامج:

text = "I love Python"

words = text.split()
count = len(words)

print(count)

الناتج:

3

هذا الكود قصير جدًا، لكنه يحتوي على فكرتين أساسيتين: split() لتقسيم النص، و len() لحساب عدد العناصر.

شرح split في Python

الدالة split() تستخدم لتقسيم النص إلى أجزاء. وعند استخدامها بدون أي قيمة داخل الأقواس، تقوم بتقسيم النص حسب المسافات بين الكلمات.

مثال:

text = "I love Python"

words = text.split()

print(words)

الناتج:

['I', 'love', 'Python']

لاحظ أن النص تحول إلى قائمة، وكل كلمة أصبحت عنصرًا داخل هذه القائمة.

{alertSuccess} الدالة split() لا تحسب الكلمات بنفسها، لكنها تحوّل النص إلى قائمة كلمات، وبعدها نستخدم len() لحساب عدد عناصر القائمة.

شرح len في Python

الدالة len() تستخدم لحساب عدد العناصر. فإذا استخدمتها مع قائمة، فإنها ترجع عدد عناصر القائمة.

مثال:

words = ["I", "love", "Python"]

print(len(words))

الناتج:

3

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

الفرق بين len(text) و len(text.split())

من الأخطاء الشائعة عند المبتدئين استخدام len() مباشرة على النص، ثم توقع أن الناتج هو عدد الكلمات. لكن هذا غير صحيح.

انظر إلى هذا المثال:

text = "I love Python"

print(len(text))

هذا الكود يحسب عدد الأحرف والمسافات، وليس عدد الكلمات. أما لحساب عدد الكلمات فنستخدم:

print(len(text.split()))
الكود ماذا يحسب؟ الاستخدام الصحيح
len(text) عدد الأحرف والمسافات داخل النص عند حساب طول النص كاملًا
len(text.split()) عدد الكلمات داخل النص عند حساب عدد كلمات الجملة
{alertWarning} تذكر: len(text) يحسب طول النص، أما len(text.split()) فيحسب عدد الكلمات.

دمج split مع len في سطر واحد

بما أن split() ترجع قائمة كلمات، يمكننا استخدام len() مباشرة معها:

text = "Python is easy to learn"

count = len(text.split())

print(count)

الناتج:

5

السطر المهم هنا هو:

len(text.split())

ومعناه: قسّم النص إلى كلمات، ثم احسب عدد الكلمات الناتجة.

جعل المستخدم يدخل النص بنفسه

حتى يصبح المثال عمليًا أكثر، سنستخدم input() حتى يكتب المستخدم النص بنفسه.

text = input("أدخل النص: ")

words = text.split()
count = len(words)

print("عدد الكلمات هو:", count)

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

I am learning Python

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

عدد الكلمات هو: 4

كتابة الكود بطريقة مختصرة

بعد فهم الكود المفصل، يمكننا كتابة البرنامج بطريقة أقصر:

text = input("أدخل النص: ")

print("عدد الكلمات هو:", len(text.split()))

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

ماذا يحدث إذا كان النص يحتوي على مسافات كثيرة؟

من مميزات split() عند استخدامها بدون قيمة داخل الأقواس أنها تتعامل جيدًا مع المسافات الزائدة.

مثال:

text = "Python     is     easy"

print(text.split())

الناتج:

['Python', 'is', 'easy']

رغم وجود أكثر من مسافة بين الكلمات، تم تقسيم النص بشكل صحيح.

ماذا لو كان النص فارغًا؟

إذا كان النص فارغًا:

text = ""

print(len(text.split()))

الناتج:

0

لأن النص لا يحتوي على أي كلمة.

تحسين البرنامج للتعامل مع النص الفارغ

حتى يكون البرنامج أفضل، يمكننا إضافة شرط يتحقق من النص قبل حساب الكلمات. سنستخدم strip() لحذف المسافات من بداية ونهاية النص، ثم نتحقق هل بقي نص حقيقي أم لا.

text = input("أدخل النص: ")

if text.strip() == "":
    print("لم تدخل أي نص")
else:
    count = len(text.split())
    print("عدد الكلمات هو:", count)
{alertInfo} الدالة strip() مفيدة عندما تريد التأكد أن المستخدم لم يكتب مسافات فقط بدل نص حقيقي.

مثال مع نص عربي

نفس الفكرة تعمل مع النص العربي أيضًا، لأن split() تعتمد على المسافات بين الكلمات.

text = "أنا أتعلم لغة بايثون"

count = len(text.split())

print(count)

الناتج:

4

لأن النص يحتوي على أربع كلمات: أنا، أتعلم، لغة، بايثون.

حساب عدد الكلمات في نص طويل

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

text = "Python is simple. Python is powerful."

words = text.split()
count = len(words)

print(count)

الناتج:

6

لأن split() قسمت النص حسب المسافات بين الكلمات.

هل علامات الترقيم تؤثر على حساب الكلمات؟

في الحساب البسيط لعدد الكلمات، علامات الترقيم لا تمنع البرنامج من حساب الكلمات، لكنها تبقى ملتصقة بالكلمة.

مثال:

text = "Hello, Python!"

print(text.split())

الناتج:

['Hello,', 'Python!']

لاحظ أن الفاصلة وعلامة التعجب بقيتا مع الكلمة. ومع ذلك، سيبقى عدد الكلمات هو 2 في هذا المثال.

{alertWarning} إذا كنت تريد تحليل نصوص بشكل أدق، مثل عد الكلمات بدون علامات ترقيم، فستحتاج إلى تنظيف النص قبل الحساب.

تنظيف بسيط للنص من علامات الترقيم

يمكننا إزالة بعض علامات الترقيم الشائعة باستخدام replace().

text = "Hello, Python!"

text = text.replace(",", "")
text = text.replace("!", "")

words = text.split()

print(words)
print(len(words))

الناتج:

['Hello', 'Python']
2

هذه طريقة بسيطة ومناسبة للمبتدئين، لكنها ليست الحل الوحيد في تحليل النصوص المتقدم.

البرنامج النهائي لحساب عدد الكلمات

الآن نكتب نسخة مرتبة ومناسبة للمبتدئين:

text = input("أدخل النص: ")

if text.strip() == "":
    print("لم تدخل أي نص")
else:
    words = text.split()
    count = len(words)

    print("عدد الكلمات هو:", count)

هذه النسخة أفضل من النسخة المختصرة لأنها تتعامل مع النص الفارغ، وتوضح الخطوات بشكل مفهوم.

نسخة مختصرة من البرنامج

بعد أن تفهم الفكرة، يمكنك استخدام نسخة مختصرة:

text = input("أدخل النص: ")

print("عدد الكلمات هو:", len(text.split()))

لكن هذه النسخة لا تعرض رسالة خاصة إذا كان النص فارغًا، لذلك النسخة السابقة أفضل للتدريب.

أخطاء شائعة في مثال حساب عدد الكلمات

الخطأ الأول: نسيان الأقواس بعد split

هذا خطأ شائع:

words = text.split

الصحيح:

words = text.split()

لأن split دالة، ويجب استدعاؤها باستخدام الأقواس.

الخطأ الثاني: استخدام len على النص مباشرة

هذا يحسب عدد الأحرف وليس عدد الكلمات:

len(text)

أما هذا فيحسب عدد الكلمات:

len(text.split())

الخطأ الثالث: عدم التعامل مع النص الفارغ

إذا كان المستخدم قد يترك الإدخال فارغًا، فمن الأفضل استخدام strip() والتحقق من النص قبل الحساب.

if text.strip() == "":
    print("لم تدخل أي نص")

متى يفيدك هذا المثال؟

مثال حساب عدد الكلمات مفيد في حالات كثيرة، منها:

  • التدرب على دوال النصوص في Python.
  • فهم العلاقة بين النصوص والقوائم.
  • حساب عدد كلمات جملة أو مقال صغير.
  • بناء أدوات نصية بسيطة للمبتدئين.
  • التمهيد لفهم تحليل النصوص Text Processing.

جدول سريع للدوال المستخدمة

الدالة وظيفتها مثال
input() تأخذ نصًا من المستخدم input("أدخل النص: ")
split() تقسم النص إلى قائمة كلمات text.split()
len() تحسب عدد العناصر len(words)
strip() تحذف المسافات من البداية والنهاية text.strip()
replace() تستبدل جزءًا من النص بجزء آخر text.replace(",", "")

أسئلة شائعة عن حساب عدد الكلمات في Python

هل split تحسب عدد الكلمات مباشرة؟

لا. split() تقسم النص إلى قائمة كلمات فقط، وبعدها نستخدم len() لحساب عدد عناصر القائمة.

هل len(text) يحسب عدد الكلمات؟

لا. len(text) يحسب عدد الأحرف والمسافات داخل النص. لحساب الكلمات استخدم len(text.split()).

هل الطريقة تعمل مع اللغة العربية؟

نعم، تعمل مع النص العربي أيضًا طالما أن الكلمات مفصولة بمسافات.

هل المسافات الزائدة تؤثر على النتيجة؟

غالبًا لا، لأن split() بدون قيمة داخل الأقواس تتعامل جيدًا مع المسافات الزائدة بين الكلمات.

هل علامات الترقيم تغير عدد الكلمات؟

في الحساب البسيط غالبًا لا تغير العدد، لكنها تبقى ملتصقة بالكلمات. إذا أردت تحليلًا أدق، نظف النص أولًا باستخدام replace() أو طرق أكثر تقدمًا.

روابط مفيدة

خلاصة المثال

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

الكود الأساسي هو:

count = len(text.split())
{alertSuccess} الخلاصة السريعة: إذا أردت حساب عدد الكلمات في نص، استخدم text.split() لتحويل النص إلى كلمات، ثم len() لحساب عددها.

تمرين بسيط لك

اكتب برنامجًا يطلب من المستخدم إدخال جملة، ثم يطبع:

  • عدد الكلمات.
  • عدد الأحرف.
  • عدد الكلمات بعد حذف المسافات الزائدة.

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

text = input("أدخل جملة: ")

print("عدد الكلمات:", len(text.split()))
print("عدد الأحرف:", len(text))

إرسال تعليق

أحدث أقدم