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

Edistyneet listat
Listaluomiset

Tässä luvussa tutkimme uusia tapoja käyttää Pythonin listoja, mm. optimointiin, jaotteluun ja jopa suurten moniulotteisten listojen, kuten taulukoihin muistuttavien matriisien, tekemiseen.

Tässä tasossa työskentelemme list comprehensions -rakenteiden parissa, eli listeillä, jotka voidaan luoda muista listoista valitsemalla niistä vain tietyt osat. Tämä tehdään hyvin suoraviivaisesti yhdellä koodirivillä ilman, että listaa tarvitsee syöttää manuaalisesti tai keksiä monimutkaisia automaatioita.

Guide

Tavoite

Ota kaikki juurekset ruokakomerosta ja lajittele ne, jotta voit sijoittaa ne oikeaan paikkaan käyttäen list comprehension -menetelmää.

Ruokakomero sisältää useita säkkejä, jotka ovat täynnä juureksia ja jotka täytyy lajitella. Näinä ovat: potatoes, onions ja garlic. On mahdollista, että säkeissä on myös pilaantuneita vihanneksia. Poimi ulos vain hyväkuntoiset vihannekset ja tallenna ne niiden oikeisiin laatikoihin.

Jotta onnistut tässä, sinun täytyy selvittää, mitä kukin säkki sisältää. Kussakin säkissä on kolme (3) listakonstanssia, jotka sisältävät niiden tiedot. Näiden nimet ovat: left_sack, middle_sack ja right_sack. Nämä listakonstanssit vastaavat kentällä olevia säkkejä nimien mukaisissa sijainneissa.

Kävele kunkin säkin edessä oleville valojen X-merkeille ja käytä speak()-funktiota tunnistaaksesi kunkin säkin sisällön käyttäen näitä konstansseja, esimerkiksi: player.speak(left_sack). Kun olet tunnistanut kunkin säkin sisällön, selvitä poistettavat esineet, kuten vihannekset, joiden nimessä esiintyy sanat: "Bad", "Spoiled" tai "Rotten".

Sinun täytyy luoda uusia listoja, jotka sisältävät vain syötäväksi soveltuvat tuotteet. Voisit tehdä tämän manuaalisesti, mutta se veisi paljon aikaa ja voisi muuttua melko sekavaksi. Tehokkaamman ratkaisun saavuttamiseksi voit luoda listan toisesta listasta, mikä tunnetaan nimellä List Comprehension.

Käytä kolmea (3) listakonstanssia: left_sack, middle_sack, right_sack ja luo niiden pohjalta kolme uutta listaa, joiden nimet ovat: potatoes, onions ja garlic, ja jotka eivät sisällä ei-toivottuja esineitä säkeissä. List Comprehensions -menetelmän avulla voit luoda uusia listoja kirjoittamatta massaa koodia, esimerkiksi:

# Original list sack = ["Potatoes", "Sweet Potatoes", "Spoiled Potatoes" ] # List Comprehension potatoes = [x for x in sack if not "Spoiled" in x] # This will create a list named potatoes with: # ["Potatoes", "Sweet Potatoes"]

Yllä olevassa esimerkissä lista potatoes luodaan listasta sack, ja se sisältää vain ["Potatoes", "Sweet Potatoes"] jättäen pois elementin "Spoiled Potatoes". Tämä saavutetaan luomalla itsenäinen for-silmukka, jossa käytetään x:ää indeksinä listan läpikäymiseen ja for / in -lauseita tunnistamaan ja poistamaan ei-toivottu elementti, eli mikä tahansa merkkijono, jossa esiintyy sana "Spoiled".

Kerraten, selvitä käyttämällä speak()-funktiota, sisältävätkö listakonstanssit sanat "Bad", "Spoiled" tai "Rotten". Luo listat potatoes, onions ja garlic käyttäen List Comprehensions -menetelmää poistamalla listoilta havaitut ei-toivotut elementit.

Kun nämä listat on luotu, kävele kunkin kolmen (3) kultaisen X-merkin luo, jotka ovat laatikoiden edessä, joissa on vihannesmerkinnät, ja sijoita listat käyttäen place()-funktiota vastaaviin laatikoihin tason suorittamiseksi. Sijainnit on merkitty kylteillä: onions vasemmassa laatikossa, potatoes keskimmäisessä laatikossa ja garlic oikeassa laatikossa.

Koodikirja