مرحبًا بك في الدرس الثالث من سلسلة بايثون بالمثال على موقع بايثون العرب.
{getToc} $title={محتوى المقال}
في هذه السلسلة نأخذ مثالًا عمليًا صغيرًا في Python، ثم نشرحه خطوة بخطوة بطريقة بسيطة تناسب المبتدئين.
في هذا المقال سنتعلم كيف نكتب برنامجًا بسيطًا يقوم بـ حساب عدد الكلمات داخل نص باستخدام بايثون.
هذا المثال مهم جدًا لأنه يجمع بين أكثر من فكرة أساسية:
- التعامل مع النصوص Strings.
- استخدام الدالة
input(). - استخدام الدالة
split(). - استخدام الدالة
len().
{alertInfo} هذا المثال مناسب جدًا للمبتدئين لأنه يوضح كيف يمكن تحويل نص كامل إلى قائمة كلمات ثم حساب عددها.
إذا كنت جديدًا على أنواع البيانات في بايثون، يمكنك مراجعة: أساسيات بايثون 7: أنواع البيانات في Python.
فكرة البرنامج ببساطة
الفكرة بسيطة جدًا:
- نأخذ نصًا من المستخدم.
- نقسم النص إلى كلمات باستخدام
split(). - نحسب عدد الكلمات باستخدام
len(). - نطبع النتيجة للمستخدم.
مثلاً إذا كان النص:
I love Python
فعدد الكلمات هو:
3
الكود الأول لحساب عدد الكلمات
لنبدأ بأبسط كود:
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']
لاحظ أن النص تحول إلى قائمة، وكل كلمة أصبحت عنصرًا داخل القائمة.
{alertInfo} الدالة split() لا تحسب الكلمات مباشرة، لكنها تقسم النص إلى قائمة كلمات، وبعدها نستخدم len() لحساب عدد عناصر القائمة.
شرح len في Python
الدالة len() تستخدم لحساب عدد العناصر.
إذا استخدمناها مع قائمة، فإنها ترجع عدد عناصر القائمة.
مثال:
words = ["I", "love", "Python"]
print(len(words))
الناتج:
3
لأن القائمة تحتوي على ثلاثة عناصر.
دمج 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()))
هذا الكود يؤدي نفس المهمة، لكنه أقل تفصيلًا.
{alertSuccess} للمبتدئ، الأفضل أن تبدأ بالكود المفصل أولًا، ثم بعد فهمه يمكنك استخدام النسخة المختصرة.
ماذا يحدث إذا كان النص يحتوي على مسافات كثيرة؟
ميزة split() أنها تتعامل بشكل جيد مع المسافات الزائدة عند استخدامها بدون قيمة داخل الأقواس.
مثال:
text = "Python is easy"
print(text.split())
الناتج:
['Python', 'is', 'easy']
رغم وجود مسافات كثيرة بين الكلمات، تم تقسيم النص بشكل صحيح.
ماذا لو كان النص فارغًا؟
إذا كان النص فارغًا:
text = ""
print(len(text.split()))
الناتج:
0
لأن النص لا يحتوي على أي كلمة.
تحسين البرنامج: التعامل مع النص الفارغ
يمكننا إضافة شرط بسيط إذا كان النص فارغًا.
text = input("أدخل النص: ")
if text.strip() == "":
print("لم تدخل أي نص")
else:
count = len(text.split())
print("عدد الكلمات هو:", count)
استخدمنا strip() لحذف المسافات من بداية ونهاية النص قبل التحقق.
{alertInfo} الدالة strip() مفيدة عندما تريد التأكد أن المستخدم لم يكتب مسافات فقط بدل نص حقيقي.
مثال مع نص عربي
نفس الفكرة تعمل مع النص العربي أيضًا.
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!']
لاحظ أن الفاصلة وعلامة التعجب بقيت مع الكلمة.
لكن لحساب عدد الكلمات البسيط، هذا لا يسبب مشكلة كبيرة غالبًا، لأن عدد الكلمات يبقى صحيحًا.
{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 على النص مباشرة
إذا كتبت:
text = "I love Python"
print(len(text))
فإن الناتج لن يكون عدد الكلمات، بل عدد الأحرف والمسافات.
الصحيح لحساب الكلمات:
print(len(text.split()))
{alertError} استخدام len(text) يحسب عدد الأحرف، أما len(text.split()) فيحسب عدد الكلمات.
متى يفيدك هذا المثال؟
مثال حساب عدد الكلمات مفيد في عدة حالات، مثل:
- تحليل النصوص البسيطة.
- حساب عدد كلمات مقال أو جملة.
- التدرب على دوال النصوص في Python.
- فهم العلاقة بين النصوص والقوائم.
- بناء أدوات نصية بسيطة للمبتدئين.
روابط مفيدة
لفهم أنواع البيانات في بايثون، اقرأ: أساسيات بايثون 7: أنواع البيانات في Python.
ولفهم القوائم التي تنتج من split()، اقرأ:
أساسيات بايثون 8: شرح Lists في Python.
ويمكنك الرجوع إلى توثيق بايثون الرسمي حول دوال النصوص: Python str.split Documentation.
مقالات مقترحة من بايثون العرب
- بايثون بالمثال 2: معرفة هل الرقم زوجي أم فردي في Python
- أساسيات بايثون 12: شرح Loops في Python للمبتدئين
- فن قراءة رسائل الخطأ في بايثون للمبتدئين
خلاصة المثال
في هذا الدرس تعلمنا كيف نحسب عدد الكلمات في نص باستخدام Python.
الفكرة الأساسية هي:
count = len(text.split())
حيث تقوم split() بتقسيم النص إلى كلمات، ثم تقوم len() بحساب عدد الكلمات.
{alertSuccess} إذا فهمت هذا المثال جيدًا، فأنت بدأت تفهم كيف يمكن لبايثون التعامل مع النصوص وتحويلها إلى بيانات قابلة للمعالجة.
تمرين بسيط لك
اكتب برنامجًا يطلب من المستخدم إدخال جملة، ثم يطبع:
- عدد الكلمات.
- عدد الأحرف.
- عدد الكلمات بعد حذف المسافات الزائدة.
ابدأ بهذا الكود:
text = input("أدخل جملة: ")
print("عدد الكلمات:", len(text.split()))
print("عدد الأحرف:", len(text))
في المثال القادم
في الدرس القادم من سلسلة بايثون بالمثال سنتعلم:
عكس النص في Python بأكثر من طريقة
وسنستخدم slicing بطريقة عملية وسهلة.
