Треки
/
Python
Python
/
Вправи
/
Твір молодшої сестри
Твір молодшої сестри

Твір молодшої сестри

Навчальна вправа

Вступ

Клас str пропонує багато корисних методів для роботи з рядками тексту (англ. string) та їх поєднання. Серед них пошук, очищення, розбиття, перетворення, переклад та багато інших прийомів.

Рядки тексту - це послідовності кодових точок Unicode: до окремих «символів» або кодових точок (рядків тексту довжиною 1) можна звертатися за номером 0-based index зліва або -1-based index справа. Рядки тексту підтримують усі звичайні операції з послідовностями.

Їх можна перебирати за допомогою синтаксису for item in <str> або for index, item in enumerate(<str>). Їх також можна конкатенувати за допомогою <str> + <other str> або <str>.join(<iterable>).

Рядки тексту є незмінними: значення обʼєкта str у памʼяті не може змінитися. Функції чи методи, що працюють із str (як-от ті, про які ми тут дізнаємося), повертають новий instance цього обʼєкта str, а не змінюють початковий str.

Далі наведено невелику добірку методів для рядків тексту в Python. Повний список дивіться у класі str у документації Python.

<str>.title() розбирає рядок тексту та переводить у верхній регістр перший «символ» кожного знайденого «слова». У Python це сильно залежить від кодеку мови, який використовується, і від того, як конкретна мова подає слова та символи. Також можуть діяти правила локалі для мови або набору символів.

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>) повертає True, якщо рядок тексту закінчується на <suffix>, і 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 Льюїса Керролла

# 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'

Вказівки

У цій вправі ми допомагаємо молодшій сестрі відредагувати її роботу для школи. Учитель звертає увагу на правильну пунктуацію, граматику та вдалий добір слів.

Попереду чотири завдання, у яких ми прибираємо зайве й змінюємо рядки тексту (англ. string).

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 вправ та справжнє наставництво від людей, і все це безкоштовно.