Coding for KidsCoding for Kids
Tahap KreatifCabaranPanduan Guru
Undi untuk ciri
Kursus Pembangunan Python Lanjutan
Bab
>
Tahap

Modul String & Masa
Modul String

Objektif

Kumpulkan data permohonan dan hantar surat balasan dengan menggunakan modul string.

Setelah bahan untuk pembinaan ladang baru telah diambil kira, tiba masanya untuk memberi tumpuan kepada kakitangan baru untuk ladang tersebut. Kita mempunyai beberapa surat yang perlu dihantar untuk permohonan kerja, sememangnya ini memerlukan banyak penulisan, namun kita boleh menggunakan modul string untuk mengimbanginya dengan membenarkan kita mencipta templat dan memformat teks untuk memudahkan pengurusan kandungan teks.

Import modul string kali ini akan dilakukan dengan cara yang sedikit berbeza berbanding modul-modul lain kerana kita akan mengimport kelas-kelas yang meluaskan modul tersebut, dan ia akan dilaksanakan dengan cara berikut:

import string from string import Template from string import Formatter

Ini memberikan kita akses kepada modul itu sendiri serta akses kepada kelas template dan formatting yang mempunyai fungsi tersendiri. Untuk tujuan kita, kita akan menggunakan fungsi dan kelas berikut:

  • string.capwords(): Fungsi ini menukar perkataan dalam string agar mempunyai kapitalisasi yang betul, menjadikan huruf pertama setiap perkataan besar dan selebihnya kecil tanpa mengira bagaimana string itu diformat.
  • Template(): Ini adalah kelas string yang digunakan untuk mencipta objek templat. Ia menggunakan fungsi substitute() yang membolehkan anda menyediakan string dan menyerlahkan lokasi menggunakan tanda $ untuk menukar data. Ini membolehkan anda mencipta string modular yang boleh digunakan mengikut keperluan.
  • Formatter(): Ini adalah kelas string yang digunakan untuk memformat atau menyusun string. Ia berfungsi dengan cara yang serupa dengan kelas Template() tetapi lebih mantap dan sesuai untuk urutan string yang lebih panjang. Ia menggunakan fungsi format() yang membolehkan anda menyediakan string dan menyisipkan data string menggunakan {}.

Mula-mula, berjalanlah ke tanda X yang cerah dan gunakan fungsi read() sambil menghadap kabinet fail, ini akan membolehkan anda mengakses folder-folder dengan nama pemohon yang berbeza. Folder-folder ini terdapat sebagai tiga (3) senarai tetap yang dinamakan: folder_a, folder_b dan folder_c.

Berjalan ke tanda X yang gelap di atas permaidani hijau dan menghadap meja. Cipta tiga (3) senarai yang dinamakan: names_a, names_b dan names_c. Gunakan list comprehensions dengan fungsi string.capwords() untuk memformatkan kapitalisasi yang betul bagi nama-nama tersebut. Padankan senarai ini dengan senarai tetap yang menggunakan huruf yang sama dalam namanya; contohnya, untuk names_a gunakan fungsi string.capwords() dengan folder_a, seperti ini: names_a = [string.capwords(x) for x in folder_a]. Gunakan formula yang sama untuk mengisi names_b dan names_c.

Cipta sebuah senarai yang dinamakan all_names dan jumlahkan ketiga-tiga senarai nama tersebut, seperti berikut: all_names = names_a + names_b + names_c. Ini akan menggabungkan semua senarai ke dalam satu senarai besar. Seterusnya, gunakan fungsi Python join() untuk menggabungkan semua item senarai ke dalam satu string. Anda juga boleh menentukan apa yang hendak diletakkan di antara setiap item senarai dengan mendeklarasikannya dalam tanda petik, seperti ini: all_names = ", ".join(all_templates). Gunakan fungsi write() yang telah disediakan dengan senarai all_names untuk mencatatkan semua nama dengan kapitalisasi yang betul.

Seterusnya, berjalanlah ke tanda X yang berwarna emas dan menghadap meja. Di sini, kita akan menyediakan templat. Kita akan mempunyai dua objek templat yang telah ditulis terlebih dahulu yang dinamakan red_templates dan blue_templates:

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

Setiap templat ini mempunyai mesej unik, namun mereka mempunyai satu persamaan iaitu tempat letak yang dilabelkan $name. Simbol $ digunakan untuk menunjukkan tempat letak yang boleh ditukar dengan string pilihan anda, dalam kes ini nama. Jika tiada nilai yang ditukar, templat itu akan menggunakan tempat letak dalam string itu sendiri. Untuk melengkapkan perkara ini, cipta satu senarai yang dinamakan all_templates.

Cipta satu gelung for dengan empat (4) kitaran, dengan mana kita akan menggantikan nama dalam ketiga-tiga senarai nama dengan templat yang disertakan dengan nama. Sebagai contoh, kita akan menggunakan red_template untuk senarai names_a. Gunakan fungsi substitute() untuk kelas Template() bagi menukar tempat letak $name dalam templat dengan nama-nama dalam senarai.

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

Lakukan perkara yang sama dengan names_b dan names_c, untuk names_b gunakan juga red_template dan untuk names_c gunakan blue_template.

Setelah semua senarai nama telah diisi dengan templat baru, tiba masanya untuk menyemak mereka. Cipta satu senarai baru yang dinamakan all_templates dan gabungkan semua senarai nama tersebut, seperti ini: all_templates = names_a + names_b + names_c. Gunakan fungsi join() yang sama seperti sebelumnya untuk menyusun semua nama yang telah ditemplatkan ke dalam bentuk yang mudah dibaca, seperti ini: all_templates = "\n".join(all_templates). Gunakan fungsi write() yang telah disediakan bersama all_templates untuk menyenaraikan semua tajuk bagi nama-nama yang berlainan.

Seterusnya, berjalanlah ke tanda X yang gelap di atas permaidani merah dan menghadap meja; di sini kita akan memformat dan menulis set pertama surat. Mulakan dengan mencipta dua (2) objek formatter yang dinamakan red_1 dan red_2 dengan notasi kelas, seperti berikut: red_1 = Formatter(), red_2 = Formatter(). Untuk penyusunan surat, cipta satu senarai yang dinamakan red_letters.

Sama seperti sebelum ini, kita akan mempunyai satu gelung for dengan empat (4) kitaran, di mana kita akan menggunakan dua set string yang telah ditulis terlebih dahulu yang akan diformat menggunakan fungsi format() dan menambah pembolehubah nama ke dalamnya. String yang telah diformat ini akan ditambah ke dalam senarai red_letters membentuk satu senarai surat yang komprehensif yang akan dihantar. Sebagai contoh, objek format red_1 akan diformat dengan senarai names_a dan ditambah ke dalam senarai 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]))

Lakukan perkara yang sama dengan objek format red_2 menggunakan string yang telah ditulis terlebih dahulu dan tambahkan names_b ke dalam gelung. Setelah semuanya disediakan, gunakan fungsi join() dengan red_letters untuk menyusun data ke dalam satu fail, seperti berikut: red_letters = "\n".join(red_letters). Gunakan fungsi write() dengan red_letters untuk mencatat semua surat yang telah diformat yang akan dihantar.

Akhir sekali, berjalanlah ke tanda X yang gelap di atas permaidani biru dan menghadap meja; di sini kita akan memformat dan menyusun set terakhir surat. Sama seperti sebelumnya, cipta dua (2) objek formatter yang dinamakan blue_1 dan blue_2 dengan notasi kelas, seperti berikut: blue_1 = Formatter(), blue_2 = Formatter(). Cipta satu senarai blue_letters untuk memformat dan menyusun semua surat.

Sekali lagi, cipta satu gelung for dengan empat (4) kitaran dan gunakan string yang telah ditulis terlebih dahulu untuk memformat senarai nama dan menambahkannya ke dalam senarai blue_letters menggunakan fungsi format(). Dalam kes ini, padankan objek format blue_1 dengan senarai names_c dan objek format blue_2 dengan senarai names_b. Semua ini dilakukan dengan cara yang sama seperti di permaidani merah, tetapi menggunakan nilai yang berbeza, mempamerkan kepelbagaian penggunaan format dan templat. Setelah selesai, gunakan fungsi write() dengan blue_letters untuk menyimpan surat terakhir dan menyiapkan tahap tersebut.

Buku Kod