فرهاد و سلیب که از بازی تفاضل خسته شده بودند، بازی جدیدی را شروع کردند.

بازی کلمه‌ها به این صورت است که فرهاد رشته‌ای را به سلیب می‌دهد و سلیب باید کلمات خوب آن به همراه تعداد تکرارهایش را به فرهاد بدهد.

در واقع فرهاد به سلیب یک رشته می‌دهد که کلمات آن‌ها با کاراکترهای Whitespace از هم جدا شده‌اند؛ برای مثال اگر متن ورودی Hello SAliB! باشد، کلمات آن Hello و SAliB! هستند.

از نظر فرهاد هر کاراکتری که جز حروف انگلیسی نباشد، یک حرف بد است و باید حذف شود. برای مثال کاراکترهای A و b حرف خوب و کاراکتر ! حرف بد هستند.

هم‌چنین به یک کلمه بد می‌گوییم اگر حداقل نیمی از کاراکترهای آن بد باشند. سلیب باید به ازای هر کلمه خوب، کاراکترهای بد آن را حذف کند و سپس کاراکتر اول هر کلمه را بزرگ و دیگر کاراکترها را کوچک کند. برای مثال کلمه A! بد است اما A!A خوب است.

برای مثال اگر متن ورودی به صورت زیر باشد:

"hEllO My FriEnDs!!! thIS i$s A tE%sT For your #p#r#o#b#l#e#m a
Plain text

بعد از این عملیات رشته به صورت زیر در می‌آید:

Hello My Friends This Is A Test For Your A
Plain text

توجه کنید که در این نمونه کلمه #p#r#o#b#l#e#m بد است و حذف شده و از دیگر کلمه‌ها فقط کاراکترهای خوبشان باقی مانده است.

در نهایت سلیب باید در قالب یک لغت‌نامه (Dictionary) که کلیدهای آن کلمات متن و مقادیر هر کلید، تعداد تکرار آن کلمه در متن نهایی است برگرداند.

شما باید تابعی به نام words_check بنویسید که با گرفتن متن ورودی، لغت‌نامه خواسته شده را برگرداند.

def words_check(text):
    pass
Python
source.py

نمونه

>> words_check("""hEllO My FriEnDs!!!
thIS is A tEsT For your #p#r#o#b#l#e#m a""")
{'A': 2, 'For': 1, 'Friends': 1, 'Hello': 1, 'Is': 1, 'My': 1, 'Test': 1, 'This': 1, 'Your': 1}
Python
terminal

نکات

  • می‌توانید فایل اولیه این سوال را از این لینک دریافت کنید.
  • برای این که کلمات رشته s را بر حسب کاراکترهای Whitespace جدا کنید، می‌توانید از تابع s.split() استفاده کنید.
  • تابع شما نباید مقداری را چاپ کند، بلکه باید مقادیر مورد نظر را بازگرداند.

نحوه ارسال

شما باید تابع words_check موجود در فایل source.py را تکمیل و سپس این فایل را ارسال کنید.


ارسال پاسخ برای این سؤال
فایلی انتخاب نشده است.