TheBrain نشر 13 ديسمبر 2015 أرسل تقرير نشر 13 ديسمبر 2015 كتبت شيفرة برمجية لإزالة أحرف العلة من سلسلة نصية معينة، حيث ستقوم حلقة التكرار بالتكرار حول الأحرف الموجودة في السلسلة النصية، لكن المشكلة أن الحلقة لا تُدور حول جميع الأحرف بل تبقى الحروف الأخيرة.الشيفرة البرمجية التي كتبتُها:text = "Hey look Words!" def anti_vowel(text): textlist = list(text) for char in textlist: if char.lower() in 'aeiou': textlist.remove(char) return "".join(textlist) print anti_vowel(text)فما سبب هذه المشكلة؟ اقتباس
0 هشام رزق الله نشر 13 ديسمبر 2015 أرسل تقرير نشر 13 ديسمبر 2015 يُعتبر هذا الخطأ من الأخطاء الشائعة في لغة بايثون، فالمشكلة الأساسية هي أنك تدور داخل السلسلة وفي نفس الوقت تُغير ترتيب أحرفها عن طريق حذف أحرف العلة، والنتيجة ستكون كما قلتَ أخطاء في التكرار في السلسلة النصية.ولذلك لحل هذه المشكلة أنصحك أولا بإنشاء نسخة من القائمة حتى لا تحذف العناصر التي تدور عليها حلقة التكرار، كما في المثال التالي:for char in textlist[:]: #shallow copy of the list # etcويمكنك أيضا الاستغناء عن حلقة التكرار لحذف حروف العلة عن طريق استعمال دالة translate() كما تظهر في المثال التالي:vowels = 'aeiou' vowels += vowels.upper() text.translate(None, vowels)المصدر اقتباس
السؤال
TheBrain
كتبت شيفرة برمجية لإزالة أحرف العلة من سلسلة نصية معينة، حيث ستقوم حلقة التكرار بالتكرار حول الأحرف الموجودة في السلسلة النصية، لكن المشكلة أن الحلقة لا تُدور حول جميع الأحرف بل تبقى الحروف الأخيرة.
الشيفرة البرمجية التي كتبتُها:
فما سبب هذه المشكلة؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.