البرمجة

حساب الأحرف المتكررة في Python

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

لفهم الخطأ، دعونا نلقي نظرة على الكود:

python
def duplicate_count(text): num = 0 count = {} for char in text: if char in count.keys(): count[char] += 1 else: count[char] = 1 for key in count: if count[key] == 1: num = 0 else: num = count[key] - 1 return num char_s = 'abcde' print(duplicate_count(char_s))

المشكلة الرئيسية تكمن في الحلقة الثانية حيث تم تحديد القيمة الجديدة لـ num في كل تكرار. هذا يعني أن القيمة ستُعيد تعيينها في كل دورة حلقة، والنتيجة النهائية ستكون القيمة التي يمكن أن تأخذها في آخر دورة حلقة فقط. هذا هو السبب في عدم احتساب الحرف الأخير بشكل صحيح.

لحل هذه المشكلة، يمكننا استخدام متغير num لتجميع عدد الأحرف المتكررة بدلاً من إعادة تعيينه في كل دورة حلقة. هناك أيضًا بعض التحسينات التي يمكننا إجراؤها لتبسيط الكود. اليك الكود المحدث:

python
def duplicate_count(text): count = {} for char in text: if char in count: count[char] += 1 else: count[char] = 1 num = 0 for key in count: if count[key] > 1: num += 1 return num char_s = 'abcde' print(duplicate_count(char_s))

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

المزيد من المعلومات

عند تنفيذ الكود المقدم، يتم الآتي:

  1. يتم تعريف وظيفة duplicate_count التي تأخذ معاملًا واحدًا text وتهدف إلى حساب عدد الأحرف المتكررة في السلسلة النصية المعطاة.
  2. يتم إنشاء متغير فارغ count كـ dictionary لتتبع عدد مرات ظهور كل حرف.
  3. يتم تكرار السلسلة النصية حرفًا حرفًا، ولكل حرف يتم فحص ما إذا كان موجودًا بالفعل في الـ dictionary count. إذا كان كذلك، يتم زيادة قيمته بواحد. وإذا لم يكن، يتم إضافته إلى الـ dictionary count مع قيمة ابتدائية واحدة.
  4. يتم بعد ذلك تحديد عدد الأحرف المتكررة باستخدام حلقة أخرى، حيث يتم التحقق من قيمة كل مفتاح في الـ dictionary count. إذا كانت القيمة أكبر من واحد، فإنه يتم زيادة العداد num بواحد.
  5. أخيرًا، يتم إرجاع قيمة num كنتيجة للدالة.

الآن بعد إصلاح الكود، يمكن تنفيذه لاحتساب الأحرف المتكررة في السلسلة النصية المعطاة. كمثال، عند تشغيل الكود مع سلسلة النص "abcde"، سيتم طباعة النتيجة التي تشير إلى عدد الأحرف المتكررة في هذه السلسلة، والتي في هذه الحالة ستكون صفر لأنه لا توجد أي أحرف متكررة.

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

زر الذهاب إلى الأعلى