مسیرها
/
Python
Python
/
تمرین‌ها
/
انشای خواهر کوچک
انشای خواهر کوچک

انشای خواهر کوچک

تمرین یادگیری

مقدمه

کلاس str روش‌های مفید زیادی برای کار با رشته‌ها و ساختن آن‌ها در اختیار شما می‌گذارد. این روش‌ها شامل جست‌وجو، پاک‌سازی، تقسیم، تبدیل، ترجمه و بسیاری تکنیک‌های دیگر است.

رشته‌ها دنباله‌هایی از نقطه‌های کد یونیکد هستند. هر «نویسه» یا نقطه‌ی کد (رشته‌هایی با طول ۱) را می‌توان با شماره‌ی 0-based index از چپ، یا شماره‌ی -1-based index از راست ارجاع داد. رشته‌ها همه‌ی عملیات دنباله‌ای رایج را پیاده‌سازی می‌کنند.

می‌توان آن‌ها را با نحوه‌ی نگارش for item in <str> یا for index, item in enumerate(<str>) پیمایش کرد. همچنین می‌توان آن‌ها را با <str> + <other str> یا <str>.join(<iterable>) به هم چسباند.

رشته‌ها تغییرناپذیرند، یعنی مقدار یک شیء str در حافظه نمی‌تواند تغییر کند. توابع یا روش‌هایی که روی یک str کار می‌کنند (مثل همان‌هایی که اینجا داریم یاد می‌گیریم) به‌جای تغییر str اصلی، یک instance جدید از آن شیء str را برمی‌گردانند.

در ادامه گزیده‌ای کوچک از روش‌های رشته در Python آمده است. برای فهرست کامل، به کلاس str در مستندات Python مراجعه کنید.

<str>.title() یک رشته را تجزیه می‌کند و نخستین «نویسه» هر «واژه»ی یافت‌شده را بزرگ می‌کند. در Python، این کار به‌شدت به کدک زبان مورد استفاده و به اینکه آن زبان خاص واژه‌ها و نویسه‌ها را چگونه نمایش می‌دهد بستگی دارد. ممکن است قواعد مربوط به locale هم برای یک زبان یا مجموعه‌ی نویسه‌ها وجود داشته باشد.

man_in_hat_th = 'ผู้ชายใส่หมวก'
man_in_hat_ru = 'мужчина в шляпе'
man_in_hat_ko = '모자를 쓴 남자'
man_in_hat_en = 'the man in the hat.'

>>> man_in_hat_th.title()
'ผู้ชายใส่หมวก'

>>> man_in_hat_ru.title()
'Мужчина В Шляпе'

>>> man_in_hat_ko.title()
'모자를 쓴 남자'

>> man_in_hat_en.title()
'The Man In The Hat.'

<str>.endswith(<suffix>) اگر رشته به <suffix> ختم شود True و در غیر این صورت False را برمی‌گرداند.

>>> 'My heart breaks. 💔'.endswith('💔')
True

>>> 'cheerfulness'.endswith('ness')
True

# Punctuation is part of the string, so needs to be included in any endswith match.
>>> 'Do you want to 💃?'.endswith('💃')
False

>> 'The quick brown fox jumped over the lazy dog.'.endswith('dog')
False

<str>.strip(<chars>) یک نسخه از str را برمی‌گرداند که <chars> ابتدا و انتهای آن حذف شده است. نقطه‌های کد مشخص‌شده در <chars> پیشوند یا پسوند نیستند؛ همه‌ی ترکیب‌های این نقطه‌های کد، با شروع از هر دو سر رشته، حذف می‌شوند. اگر چیزی برای <chars> مشخص نشود، همه‌ی ترکیب‌های نقطه‌های کد فاصله حذف می‌شوند.

# This will remove "https://", because it can be formed from "/stph:". 
>>> 'https://unicode.org/emoji/'.strip('/stph:')
'unicode.org/emoji'

# Removal of all whitespace from both ends of the str.
>>> '   🐪🐪🐪🌟🐪🐪🐪   '.strip()
'🐪🐪🐪🌟🐪🐪🐪'

>>> justification = 'оправдание'
>>> justification.strip('еина')
'оправд'

# Prefix and suffix in one step.
>>> 'unaddressed'.strip('dnue')
'address'

>>> '  unaddressed  '.strip('dnue ')
'address'

<str>.replace(<substring>, <replacement substring>) یک نسخه از رشته را برمی‌گرداند که در آن همه‌ی رخدادهای <substring> با <replacement substring> جایگزین شده‌اند.

نقل‌قول زیر از شکار اسنارک اثر لوئیس کارول است.

# The Hunting of the Snark, by Lewis Carroll
>>> quote = '''
"Just the place for a Snark!" the Bellman cried,
   As he landed his crew with care;
Supporting each man on the top of the tide
   By a finger entwined in his hair.

"Just the place for a Snark! I have said it twice:
   That alone should encourage the crew.
Just the place for a Snark! I have said it thrice:
   What I tell you three times is true."
'''

>>> quote.replace('Snark', '🐲')
...
'\n"Just the place for a 🐲!" the Bellman cried,\n   As he landed his crew with care;\nSupporting each man on the top of the tide\n   By a finger entwined in his hair.\n\n"Just the place for a 🐲! I have said it twice:\n   That alone should encourage the crew.\nJust the place for a 🐲! I have said it thrice:\n   What I tell you three times is true."\n'

>>> 'bookkeeper'.replace('kk', 'k k')
'book keeper'

دستورالعمل‌ها

در این تمرین به خواهر کوچک‌ترتان کمک می‌کنید تا مقاله‌اش را برای مدرسه ویرایش کند. معلم دنبال نقطه‌گذاری درست، دستور زبان صحیح و انتخاب واژه‌های عالی است.

چهار کار برای پاک‌سازی و تغییر رشته‌ها پیش رو دارید.

1. بزرگ کردن حروف عنوان مقاله

هر مقاله‌ی خوب به عنوانی با قالب‌بندی درست نیاز دارد. تابع capitalize_title(<title>) را پیاده‌سازی کنید که یک عنوان str را به عنوان پارامتر می‌گیرد و حرف اول هر واژه را بزرگ می‌کند. این تابع باید یک str در حالت عنوان برگرداند.

>>> capitalize_title("my hobbies")
"My Hobbies"

2. بررسی پایان یافتن هر جمله با نقطه

می‌خواهید مطمئن شوید که نقطه‌گذاری مقاله بی‌عیب و نقص است. تابع check_sentence_ending() را پیاده‌سازی کنید که sentence را به عنوان پارامتر می‌گیرد. این تابع باید یک bool برگرداند.

>>> check_sentence_ending("I like to hike, bake, and read.")
True

3. مرتب کردن فاصله‌ها

برای اینکه مقاله حرفه‌ای به نظر برسد، باید فاصله‌های اضافی حذف شوند. تابع clean_up_spacing() را پیاده‌سازی کنید که sentence را به عنوان پارامتر می‌گیرد. این تابع باید فاصله‌های سفید اضافی را از ابتدا و انتهای جمله حذف کند و یک str جدید و به‌روز شده از جمله برگرداند.

>>> clean_up_spacing(" I like to go on hikes with my dog.  ")
"I like to go on hikes with my dog."

4. جایگزین کردن واژه‌ها با مترادف

برای اینکه مقاله را حتی بهتر کنید، می‌توانید برخی از صفت‌ها را با مترادف‌هایشان جایگزین کنید. تابع replace_word_choice() را بنویسید که sentence، old_word و new_word را به عنوان پارامتر می‌گیرد. این تابع باید همه‌ی نمونه‌های old_word را با new_word جایگزین کند و یک str جدید با جمله‌ی به‌روز شده برگرداند.

>>> replace_word_choice("I bake good cakes.", "good", "amazing")
"I bake amazing cakes."
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Python Exercism

آماده‌اید انشای خواهر کوچک را شروع کنید؟

در Exercism ثبت‌نام کنید تا Python را همراه با 17 مفهوم146 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.