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 = 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, чтобы записать последние письма и завершить уровень.

Книга Кода