فرهاد و سلیب که از بازی تفاضل خسته شده بودند، بازی جدیدی را شروع کردند.
بازی کلمهها به این صورت است که فرهاد رشتهای را به سلیب میدهد و سلیب باید کلمات خوب آن به همراه تعداد تکرارهایش را به فرهاد بدهد.
در واقع فرهاد به سلیب یک رشته میدهد که کلمات آنها با کاراکترهای 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
بعد از این عملیات رشته به صورت زیر در میآید:
Hello My Friends This Is A Test For Your A
توجه کنید که در این نمونه کلمه #p#r#o#b#l#e#m
بد است و حذف شده و از دیگر کلمهها فقط کاراکترهای خوبشان باقی مانده است.
در نهایت سلیب باید در قالب یک لغتنامه (Dictionary) که کلیدهای آن کلمات متن و مقادیر هر کلید، تعداد تکرار آن کلمه در متن نهایی است برگرداند.
شما باید تابعی به نام words_check
بنویسید که با گرفتن متن ورودی، لغتنامه خواسته شده را برگرداند.
def words_check(text):
pass
نمونه
>> 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}
نکات
- میتوانید فایل اولیه این سوال را از این لینک دریافت کنید.
- برای این که کلمات رشته
s
را بر حسب کاراکترهای Whitespace جدا کنید، میتوانید از تابعs.split()
استفاده کنید. - تابع شما نباید مقداری را چاپ کند، بلکه باید مقادیر مورد نظر را بازگرداند.
نحوه ارسال
شما باید تابع words_check
موجود در فایل source.py
را تکمیل و سپس این فایل را ارسال کنید.
ارسال پاسخ برای این سؤال