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

Edistyneet listat
Joukkojen lajittelu

Tavoite

Järjestä ja valmistele ateria hyödyntämällä joukkoja ainesosien lajittelemiseksi ja kokoamiseksi.

Olisi hyvä idea alkaa valmistaa ruokaa, sillä jääkaapista löytyy muutamia pakattuja ainesosia sekä yrttejä, joita voit käyttää antamaan ruoalle makua. Kaikki aineet on tallennettu listoihin, joten olisi järkevää käyttää Sets-tietorakennetta, jotta saat ainekset yhdistettyä ja saat ruoanlaitostasi parhaan irti.

On olemassa kolme (3) listavakiota, joista kaksi (2) ovat lihaa, nimeltään: pack1 ja pack2, ja yksi (1) sisältää ruoanlaittoaineksia, nimeltään ingredients. Kävele tumman X-merkin luo oranssilla matolla ja käänny jääkaapin puoleen, käytä funktiota collect() poimiaksesi pack1 ja pack2 jääkaapista, esimerkiksi näin: player.collect(pack1).

Kun liha on kerätty, kävele vaalean X-merkin kohdalle ja käänny leikkuulaudan suuntaan. Tässä tarkistamme pakkien sisällön käyttämällä funktiota speak() molempien kerättyjen listavakioiden kanssa. Tämän jälkeen yhdistämme ainekset käyttämällä Sets-tietorakennetta, kuten edellisellä tasolla. Luo kaksi Sets-joukkoa nimeltä set1 ja set2 ja käytä funktiota set() asettaaksesi pack1:n ja pack2:n niihin, esimerkiksi näin: set1 = set(pack1).

Kun listat on yhdistetty Sets-muotoon, on aika lajitella ja jakaa ainekset pienempiin Sets-joukkoihin mukavuuden vuoksi.

Ensimmäinen tapa saavuttaa tämä on nimeltään systemic_difference, mikä mahdollistaa erottamaan ne ainekset, joita ei jaeta kummankaan Set-joukon välillä. Luo Set nimeltä unique ja käytä kahta Set-joukkoa vertaillaksesi ja tunnistaaksesi ainutlaatuiset ainekset systemic_difference-metodilla, esimerkiksi näin: unique = set1.symmetric_difference(set2). Käytä funktiota speak() luomasi Set-joukon kanssa varmistaaksesi joukon sisällön.

Jatka lajittelua luomalla Set nimeltä shared ja käytä edellisellä tasolla opittua intersection-metodia tunnistaaksesi ainekset, jotka löytyvät molemmista Set-joukoista. Käytä kahta Set-joukkoa vertaillaksesi ja tunnistaaksesi ainekset, esimerkiksi näin: shared = set1.intersection(set2). Käytä funktiota speak() luomasi Set-joukon kanssa varmistaaksesi joukon sisällön.

Lopuksi käytä metodia nimeltä difference, jonka avulla voit erottaa ne ainekset, joita löytyy vain yhdestä Set-joukosta eivätkä toisesta. Luo kaksi (2) Sets-joukkoa nimeltä meat1 ja meat2, käytä alkuperäisiä kahta Set-joukkoa vertaillaksesi ja tunnistaaksesi ainekset difference-metodilla, esimerkiksi näin: meat1 = set1.difference(set2) ja meat2 = set2.difference(set1). Käytä funktiota speak() molempien luomiesi lihajoukkojen kanssa varmistaaksesi kunkin joukon sisällön.

Nyt kun lihat on lajiteltu, kävele tumman X-merkin luo sinisen maton yläpuolelle, käänny jääkaapin puoleen ja käytä funktiota place() tallentaaksesi luomasi shared Set-joukon, esimerkiksi näin: player.place(shared). Näin laitat pois ne ainekset, joita et aio käyttää ruoanlaitossa.

Kävele kultaisen X-merkin luo, käänny kaapin puoleen ja käytä funktiota collect() napataksesi viimeisen listavakion nimeltä ingredients sekä funktiota speak() varmistaaksesi sen sisällön. Siirrä ingredients-listan elementit uuteen Set-joukkoon nimeltä set3. Nyt kun sinulla on kaikki ainekset, luo kaksi Sets-joukkoa, nimeltään meal1 ja meal2, käyttämällä union-metodia, joka yhdistää kaikki ruoanlaittoon tarvittavat elementit.

Ruoan meal1 osalta yhdistä set3 ja meat1 näin: meal1 = set3.union(meat1). Kävele tumman X-merkin luo violetin maton päällä ja käytä meal1 Set-joukkoa sekä funktiota speak() varmistaaksesi sen sisällön ja funktiota place() valmistaksesi aterian kattilaan.

Ruoalle meal2 toimi samalla tavalla, mutta käytä sen sijaan set3:a ja meat2:a union-metodilla. Kävele tumman X-merkin luo keltaisen maton päällä ja käänny kattilan puoleen, käytä funktioita speak() ja place() meal2 Set-joukon kanssa tason suorittamiseksi.

Koodikirja