Edistynyt Python-kehityskurssi
Luku
>
Taso
Edistyneet listat
Luodaan sisäkkäinen lista
Tavoite
Aseta mausteet oikein maustetarjoilijaan käyttämällä sisäkkäisiä listoja.
Yksi maustetarjoilija on tyhjä ja se täytyy täyttää asianmukaisesti; varastossa on mausteita, mutta ne pitää sovittaa oikein, järjestää huolellisesti ja sijoittaa maustetarjoilijaan.
Koska tuotteita on runsaasti ja ne on tallennettu eri hyllyille maustetarjoilijassa, tavalliset listat ja sanakirjat eivät riitä. Näissä tilanteissa voit käyttää sisäkkäisiä listoja; nämä ovat listoja, jotka sisältävät yhden tai useamman listan sisällä.
Mausteiden varastoimiseksi sinun täytyy ensin hakea purkkeja, joihin tuotteet voidaan säilyttää asianmukaisesti. Kävele kultaisen X-merkin luo, kohtaa laatikko ja käytä collect()-funktiota ottaaksesi "empty jar" tallennuksen helpottamiseksi.
Kun purkit on kerätty, kävele vaaleiden X-merkkien luo puulaatikoiden edessä. Tällä tasolla on neljä (4) listavakiota, yksi kutakin laatikkoa varten: crate1, crate2, crate3 ja crate4. Käytä speak()-funktiota näiden listavakioiden kanssa selvittääksesi kunkin laatikon sisällön; vakioiden järjestys vastaa laatikoita oikealta vasemmalle, esimerkiksi player.speak(crate1).
Kun laatikoiden sisältö on selvitetty, käytä listan ymmärrystä (list comprehension) luodaksesi uusia listoja ilman tarpeettomia kohteita, jotka löytyvät listavakiosta. Jos laatikon sisällössä on: "package", "string" tai "stuffing", käytä samaa kaavaa kuin edellisessä luvussa luodaksesi listat, esimerkiksi:
crate1 = ["bay herb", "cilantro herb", "ginger herb", "oregano herb", "string"] herbs = [x for x in crate1 if not "string" in x]
Yllä oleva koodi luo uuden listan, johon sisältyvät vain ne kohteet, joissa ei esiinny sanaa "string". Listojen tulee olla nimeltään: herbs, spices, salts ja sugars; tiedät, mikä lista kuuluu mihinkin, koska listojen kohteet kantavat nimeä.
Kun kaikki neljä listaa on luotu, on aika yhdistää ne kaikki sisäkkäiseksi listaksi. Luo lista nimeltä seasonings ja lisää luomasi listat uuteen listaan, esimerkiksi näin:
seasonings = [ ] seasonings.append(herbs) .......
Kun kaikki kohteet on lisätty sisäkkäiseen listaan, kävele vihreällä matolla olevan tumman X-merkin luo ja kohtaa hylly. Käytä speak()-funktiota yhdessä seasonings-sisäkkäisen listan kanssa varmistaaksesi kunkin hyllyn sisältö. Tämän jälkeen käytä place()-funktiota listan kanssa suorittaaksesi tason, esimerkiksi näin: player.speak(seasonings).