Coding for KidsCoding for Kids
Креативні РівніВикликиПосібник для Вчителів
Голосувати за функції
Поглиблений курс розробки на Python
Розділ
>
Рівень

Модулі рядків та часу
Модуль рядків

Мета

Скомпілювати дані про заявку та відправити відповідні листи, використовуючи модуль string.

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

На цей раз імпортування модуля string буде дещо відрізнятися від інших модулів, адже ми будемо імпортувати класи, що розширюють можливості модуля, і це буде виконуватись наступним чином:

import string from string import Template from string import Formatter

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

  • string.capwords(): Ця функція перетворює слова в рядку так, щоб вони мали правильну капіталізацію — перша літера кожного слова стає великою, а всі інші — малими, незалежно від початкового форматування.
  • Template(): Це клас рядків, який використовується для створення об’єкта шаблону. Він використовує функцію substitute(), яка дозволяє налаштувати рядок і визначити місце для заміни даних за допомогою знака $. Це дозволяє створювати модульні рядки, які можна використовувати за потребою.
  • Formatter(): Це клас рядків, який використовується для форматування або складання рядка. Працює схожим чином, як клас Template(), але є більш потужним і зручним для обробки великих послідовностей рядків. Він використовує функцію format(), яка дозволяє встановити рядок і вставити в нього дані, використовуючи {}.

Почніть, пройшовши до світлого позначення X і використовуючи функцію read(), коли ви звернені до картотечного шкафу — це дозволить отримати доступ до папок з іменами різних кандидатів. Ці папки представлені трьома (3) константними списками з назвами: folder_a, folder_b та folder_c.

Пройдіть до темного позначення X на зеленому килимі та зверніться до столу. Створіть три (3) списки з назвами: names_a, names_b та names_c. Використовуйте генератори списків разом з функцією string.capwords() для правильного форматування імен. Поєднайте список з відповідною константою, що містить однакову літеру в назві. Наприклад, для names_a використовуйте string.capwords() разом з folder_a, так:

names_a = [string.capwords(x) for x in folder_a]

Використовуйте ту ж саму формулу для заповнення names_b та names_c.

Створіть список з назвою all_names і об’єднайте три (3) списки імен, як це показано:

all_names = names_a + names_b + names_c

Це об’єднає всі списки в один великий список. Далі скористайтеся функцією Python join(), яка об’єднає всі елементи списку в рядок. Ви також можете вказати, що ставити між елементами, зазначивши це у лапках, наприклад:

all_names = ", ".join(all_templates)

Використовуйте попередньо написану функцію write() зі списком all_names, щоб зафіксувати всі імена з правильною капіталізацією.

Далі, підійдіть до золотого позначення X і зверніться до столу — тут ми налаштуємо шаблони. У нас буде два попередньо створених об’єкта шаблонів з назвами red_templates та blue_templates:

red_template = Template( "Hello, $name , thank you for applying for this position.") blue_template = Template( "Esteemed , $name , your application has been approved.")

Кожен з цих шаблонів має унікальне повідомлення, проте вони мають спільне — заповнювач з позначкою $name. Символ $ використовується для позначення заповнювача, який можна замінити рядком за вашим вибором (у даному випадку, як підказує заголовок, це ім’я). Якщо значення не буде замінене, шаблон використає сам заповнювач у рядку. Для доповнення створіть список з назвою all_templates.

Створіть цикл for з чотирма (4) ітераціями, у якому ми замінимо імена у трьох (3) списках імен на шаблони з включеними іменами. Наприклад, ми застосуємо шаблон red_template до списку names_a. Використовуйте функцію substitute() класу Template() для заміни заповнювача $name у шаблоні на відповідні імена зі списку.

for x in range(4): names_a[x] = red_template.substitute(name=names_a[x])

Зробіть те саме для names_b і names_c: для names_b використовуйте red_template, а для names_cblue_template.

Після того, як усі списки імен будуть заповнені новими шаблонами, настав час їх переглянути. Створіть новий список з назвою all_templates і об’єднайте всі списки імен, як тут:

all_templates = names_a + names_b + names_c

Використовуйте ту ж функцію join(), що й раніше, щоб зібрати всі шаблонізовані імена в зручний для читання формат, наприклад:

all_templates = "\n".join(all_templates)

Використовуйте попередньо написану функцію write() зі змінною all_templates, щоб відобразити всі заголовки для різних імен.

Далі ми підійдемо до темного позначення X на червоному килимі та звернемося до столу, де ми будемо форматувати і записувати перший набір листів. Почніть зі створення двох (2) об’єктів форматування з назвами red_1 і red_2, використовуючи позначення класу, як це показано:

red_1 = Formatter() , red_2 = Formatter()

Для створення листів створіть список з назвою red_letters.

Як і раніше, ми створимо цикл for з чотирма (4) ітераціями. Ми використаємо два набори попередньо написаних рядків, які будуть форматовані за допомогою функції format(), до яких будуть додаватись змінні імен. Ці відформатовані рядки будуть додані до списку red_letters, формуючи повний набір листів, які буде відправлено. Наприклад, об’єкти форматування red_1 будуть форматовані зі списком names_a і додані до red_letters.

for x in range(4): red_letters.append(red_1.format( "{} Orientation will begin next week, please report to the office...", names_a[x]))

Зробіть те саме з об’єктом форматування red_2, використовуючи його попередньо написаний рядок і додайте names_b до циклу. Після цього використайте функцію join() зі списком red_letters, щоб зібрати всі дані в один файл, як це показано:

red_letters = "\n".join(red_letters)

Використовуйте функцію write() зі змінною red_letters, щоб записати всі відформатовані листи, що відправляються.

Нарешті, підійдіть до темного позначення X на синьому килимі та зверніться до столу, де ми будемо форматувати і складати останній набір листів. Як і раніше, створіть два (2) об’єкти форматування з назвами blue_1 і blue_2, використовуючи позначення класу, як показано:

blue_1 = Formatter() , blue_2 = Formatter()

Створіть список blue_letters для форматування та складання всіх листів.

Ще раз створіть цикл for з чотирма (4) ітераціями та використайте попередньо написані рядки для форматування списків імен, додаючи їх до списку blue_letters за допомогою функції format(). У цьому випадку поєднайте об’єкти форматування blue_1 зі списком names_c та об’єкти blue_2 зі списком names_b. Все це робиться так само, як і на червоному килимі, але з використанням різних значень, що демонструє універсальність використання форматів та шаблонів. Після завершення використайте функцію write() зі змінною blue_letters, щоб зберегти останні листи та завершити рівень.

Книга Коду