Coding for KidsCoding for Kids
Luovat TasotHaasteetOpettajan Opas
Äänestä ominaisuuksia
Edistynyt Python-kehityskurssi
Luku
>
Taso

Merkkijono- ja aikamoduulit
Merkkijonojen moduuli

Tavoite

Kokoa sovellustiedot ja lähetä vastauskirjeitä käyttämällä string-moduulia.

Nyt kun uuteen maatilan rakentamiseen tarvittavat materiaalit on selvitetty, on aika kääntää huomio uuteen henkilöstöön. Meillä on useita kirjeitä, jotka täytyy lähettää työhakemuksista, mikä luonnollisesti vaatisi paljon kirjoittamista, mutta voimme käyttää string-moduulia tämän kompensoimiseksi, jolloin voimme luoda malleja ja muotoilla tekstiä helpottaaksemme laajojen tekstimäärien käsittelyä.

Tällä kertaa string-moduulin tuominen tapahtuu hieman eri tavalla kuin muiden moduulien kohdalla, sillä tuomme käyttöön moduulia laajentavia luokkia, ja se suoritetaan seuraavasti:

import string from string import Template from string import Formatter

Tämä antaa meille pääsyn itse moduuliin sekä template- ja muotoilu-luokkiin, jotka sisältävät omia funktioitaan. Tarkoituksiimme käytämme seuraavia funktioita ja luokkia:

  • string.capwords(): Tämä funktio muuntaa stringin sanat asianmukaisesti kirjoitetuiksi, jolloin sanan ensimmäinen kirjain on isolla ja loput pienellä riippumatta siitä, miten string on alun perin muotoiltu.
  • Template(): Tämä on string-luokka, jota käytetään mallin objektien luomiseen. Se käyttää funktiota substitute(), jonka avulla voit määrittää stringin ja korostaa tiettyä kohtaa käyttämällä $-merkkiä datan vaihtamiseen. Tämä mahdollistaa modulaaristen stringien luomisen, joita voi käyttää tarpeen mukaan.
  • Formatter(): Tämä on string-luokka, jota käytetään stringin muotoiluun tai koostamiseen. Se toimii samalla tavalla kuin Template()-luokka, mutta on monipuolisempi ja sopii paremmin laajempiin string-jonoihin. Se käyttää funktiota format(), jonka avulla voit määrittää stringin ja lisätä string-dataa käyttämällä {}.

Aloita kävelemällä kevyen X-merkin luokse ja käytä read()-funktiota, kun kohtaat arkiston; näin saat pääsyn kansioihin, joiden nimi on eri hakijoiden nimiä. Nämä kansiot ovat kolmen (3) listavakion nimeltä: folder_a, folder_b ja folder_c.

Kävele tumman X-merkin luokse vihreän maton päällä ja kohtaa työpöytä. Luo kolme (3) listaa nimeltä: names_a, names_b ja names_c. Käytä listanmuodostusta yhdessä string.capwords()-funktion kanssa varmistaaksesi, että nimissä käytetään oikeaa kirjoitusasua. Yhdistä kukin lista vakioon, jonka nimi alkaa samalla kirjaimella; esimerkiksi names_a:n kohdalla käytä string.capwords()-funktiota folder_a:n kanssa, kuten tässä: names_a = [string.capwords(x) for x in folder_a]. Käytä samaa kaavaa täyttääksesi myös names_b ja names_c.

Luo lista nimeltä all_names ja yhdistä nämä kolme nimeä sisältävää listaa, kuten tässä: all_names = names_a + names_b + names_c. Tämä yhdistää kaikki listat yhdeksi suuremmaksi listaksi. Jatka käyttämällä Pythonin join()-funktiota, joka liittää kaikki listan kohteet yhdeksi stringiksi. Voit myös määrittää, mitä lisätään jokaisen kohteen väliin laittamalla sen lainausmerkkeihin, kuten tässä: all_names = ", ".join(all_templates). Käytä valmiiksi määriteltyä write()-funktiota all_names:n kanssa, jotta kaikki nimet kirjataan oikeassa kirjoitusasussa.

Seuraavaksi kävele kultaisen X-merkin luokse ja kohtaa työpöytä, sillä tässä asetamme mallit. Meillä on kaksi valmiiksi määriteltyä mallia, nimeltään red_templates ja blue_templates:

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

Jokaisella näistä malleista on oma uniikki viestinsä, mutta niissä on yksi yhteinen piirre, nimittäin paikkamerkki, joka on merkitty $name:ksi. $-merkkiä käytetään osoittamaan paikkamerkkiä, joka voidaan vaihtaa haluamallasi stringillä; tässä tapauksessa kyseessä on nimi. Jos arvoa ei vaihdeta, malli käyttää paikkamerkkiä sellaisenaan stringissä. Täydennyksenä tähän, luo lista nimeltä all_templates.

Luo for-silmukka, jossa on neljä (4) kierrosta; tällä silmukalla vaihdetaan kolmessa (3) nimilistassa olevat nimet malleihin, joihin nimet sisältyvät. Esimerkiksi, sovellamme red_template-mallia names_a-listaan. Käytä Template()-luokan substitute()-funktiota vaihtamaan $name-paikkamerkki mallissa vastaavalla nimellä listasta.

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

Tee sama names_b:n ja names_c:n kanssa; käytä red_template-mallia names_b:lle ja blue_template-mallia names_c:lle.

Kun kaikki nimilistat on täytetty uusilla malleilla, on aika tarkastella niitä. Luo uusi lista nimeltä all_templates ja yhdistä kaikki nimilistat näin: all_templates = names_a + names_b + names_c. Käytä jälleen join()-funktiota kokoamaan kaikki mallitetut nimet luettavaksi muodoksi, kuten tässä: all_templates = "\n".join(all_templates). Käytä write()-funktiota all_templates:n kanssa, jotta eri nimille asetetut otsikot kirjataan.

Seuraavaksi kävele tumman X-merkin luo punaisella matolla ja kohtaa työpöytä; tässä muotoilemme ja kirjoitamme ensimmäisen kirjesarjan. Aloita luomalla kaksi (2) formatter-oliota nimeltä red_1 ja red_2 luokkamääritelmällä, kuten tässä: red_1 = Formatter(), red_2 = Formatter(). Kirjeiden koostamista varten luo lista nimeltä red_letters.

Aivan kuten aiemmin, käytämme for-silmukkaa, jossa on neljä (4) kierrosta. Meillä on kaksi valmiiksi määriteltyä stringiä, jotka muotoillaan käyttämällä format()-funktiota, ja joihin lisätään nimimuuttujia. Nämä muotoillut stringit liitetään red_letters-listaan muodostaen kattavan listan kirjeitä, jotka lähetetään. Esimerkiksi, red_1-formatteri-muotoillaan names_a-listan avulla ja liitetään red_letters-listaan.

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

Tee sama red_2-formatteri-oliolle käyttäen sen valmiiksi määriteltyä stringiä ja liitä names_b-lista silmukkaan. Kun tämä on kaikki asetettu, käytä join()-funktiota red_letters:n kanssa kokoamaan data yhdeksi tiedostoksi, kuten tässä: red_letters = "\n".join(red_letters). Käytä write()-funktiota red_letters:n kanssa kirjataksesi kaikki muotoillut kirjeet lähetettäviksi.

Lopuksi kävele tumman X-merkin luokse sinisellä matolla ja kohtaa työpöytä; tässä muotoilemme ja koostamme viimeisen kirjesarjan. Aivan kuten aiemmin, luo kaksi (2) formatter-oliota nimeltä blue_1 ja blue_2 käyttäen luokkamääritelmää, kuten tässä: blue_1 = Formatter(), blue_2 = Formatter(). Luo lista nimeltä blue_letters kirjeiden muotoilua ja koostamista varten.

Luo jälleen for-silmukka, jossa on neljä (4) kierrosta, ja käytä valmiiksi määriteltyjä stringejä muotoilemaan nimilistat ja liittämään ne blue_letters-listaan käyttäen format()-funktiota. Tässä tapauksessa, yhdistä blue_1-formatteri-oliot names_c-listaan ja blue_2-formatteri-oliot names_b-listaan. Tämä tehdään samalla tavalla kuin punaisen maton kohdalla, mutta käyttäen erilaisia arvoja, mikä osoittaa muotoilujen ja mallien monipuolisuuden. Kun tämä on valmis, käytä write()-funktiota blue_letters:n kanssa viimeisten kirjeiden kirjaamiseen ja tason loppuun saattamiseen.

Koodikirja