Edistynyt Python-kehityskurssi
Luku
>
Taso
Matematiikan moduulit
Operaattorimoduuli
Tavoite
Varmista ja allokoi uuden maatalousmaan rakennusmateriaalien tilaukset käyttämällä operator-moduulia.
Liitännäisen yläkerrassa on toimistoja, joissa säilytetään lokitietoja varastosta ja rakennusmateriaalien tilauksista, joita tarvitaan uudelle maa-alueen kehittämiselle. On olemassa erilaisia työkaluja, joita voidaan käyttää materiaalien tarkistukseen ja laskemiseen, jotta niitä voidaan käyttää rakentamisessa; matematiikka- ja tilastotieteen moduulin lisäksi voimme käyttää operator-moduulia.
Tätä moduulia, import operator, voidaan käyttää operaattorilaskelmien yksinkertaistamiseen ja kätevään pakkaamiseen funktioiksi. Näitä funktioita voi käyttää sekä optimointiin että arvojen tuottamiseen ilman, että täytyy luoda objektia, johon tallentaa laskelmien arvot.
operators.eq(): Ottaa kaksi argumenttia, tarkistaa ovatko argumentit keskenään yhtä suuret.operators.lt(): Ottaa kaksi argumenttia, tarkistaa onko ensimmäinen argumentti pienempi kuin toinen.operators.gt(): Ottaa kaksi argumenttia, tarkistaa onko ensimmäinen argumentti suurempi kuin toinen.operators.floordiv(): Ottaa kaksi argumenttia, jakaa ensimmäisen argumentin toisella ja soveltaa vastaavaamath.floor()-toimintoa, pyöristäen tuloksen alaspäin.operators.mod(): Ottaa kaksi argumenttia, palauttaa jakojäännöksen näiden kahden argumentin välisestä jaosta.operators.contains(): Funktiota käytetään listan kanssa, ottaa kaksi argumenttia; ensimmäinen argumentti on lista, toinen on arvo, jota haluat tarkistaa, onko se listassa. Palauttaa:truetaifalseriippuen siitä, onko arvo läsnä vai ei.operators.concat(): Ottaa kaksi listaa argumentteina, yhdistää nämä kaksi listaa yhdeksi siistiksi funktioksi, ja saattaa olla nopeampi kuin muut menetelmät.operators.countOf(): Ottaa kaksi argumenttia, listan ja arvon, ja tarkistaa, kuinka monta kertaa kyseinen arvo esiintyy listassa. Palauttaa esiintymien lukumäärän.
Aloittaaksesi, kävele pimeän X-merkin luo punaisen, sinisen ja vihreän väristen mattojen yli. On olemassa kuusi (6) vakioa: red_order, blue_order, green_order, jotka ovat materiaalien tilauksia, sekä: red_req, blue_req, green_req, jotka ovat rakennukseen tarvittavat määrät.
Pimeän X-merkin kohdalla punaisella matolla, käytä read()-funktiota tarkistaaksesi tarvittavan materiaalimäärän. Luo muuttuja nimeltä red_verification ja käytä operator.eq()-funktiota vakioiden red_order ja red_req kanssa, kuten näin: red_verification = operator.eq(red_order,red_req). Käytä esikoodattua write()-funktiota ja syötä red_verification tuloksen näyttämiseksi.
Sinisen ja vihreän X-merkkien kohdalla toista sama prosessi; käytä read()-funktiota ja luo muuttujat: blue_verification ja green_verification. Siniselle muuttujalle tallenna operator.lt()-funktion arvo käyttäen vakioita blue_order ja blue_req, jotta tarkistetaan, onko tilaus pienempi kuin vaadittu määrä. Vihreälle muuttujalle tallenna operator.gt()-funktion arvo käyttäen vakioita green_order ja green_req, jotta tarkistetaan, onko tilaus suurempi kuin tarvittavat materiaalit. Käytä esikoodattuja write()-funktioita vastaavien varmennustoimintojen näyttämiseksi niiden värillisten mattojen kohdalla.
Seuraavaksi kävele valoisalle X-merkillä ja käytä pöydällä read()-funktiota tarkistaaksesi jo tehdyt ja matkalla olevat tilaukset. Tilauskirjassa löydät kahden vakion arvot: main_order ja sub_order sekä tiedon, moneen osaan materiaalit tulee jakaa. Tilauskirjan lukemisen jälkeen, luo muuttuja nimeltä allocations ja tallenna siihen operator.floordiv()-funktion arvo, jolla jaat main_order-arvon osien lukumäärän mukaan kirjassa kuvattuun määrään, kuten näin: allocations = operator.floordiv(main_order, -add sections-). Tämä jakaa tilauksen ja pyöristää tuloksen alaspäin. Käytä esikoodattua write()-funktiota muuttujan allocations näyttämiseksi.
Kävele kultaiselle X-merkillä ja luo muuttuja nimeltä remainder. Tallenna siihen operator.mod()-funktion tulos, joka laskee vakioiden main_order ja sub_order välisestä jaosta jakojäännöksen. Pöydällä käytä esikoodattua write()-funktiota muuttujan remainder näyttämiseksi.
Siirry pimeälle X-merkillä purppuran maton yli; täällä tarkistamme, onko rakennukseen tarvittavien työkalujen toimitus suoritettu. Meillä on kaksi listavakiota, delivery_1 ja delivery_2, ja tarkistamme, onko työkalut toimitettu ensimmäisessä erässä. Luo muuttuja nimeltä tools ja tallenna siihen operator.contains()-funktion tulos; ensimmäiseksi argumentiksi anna lista delivery_1 ja toiseksi argumentiksi merkkijono "tools". Tämä tarkistaa, löytyvätkö työkalut toimituksesta, kuten näin: tools = operator.contains(delivery_1,"tools"). Kun tämä on tehty, käytä pöydällä esikoodattua write()-funktiota muuttujan tools näyttämiseksi, jotta nähdään, onko työkalut toimitettu onnistuneesti.
Seuraavaksi tarkistetaan kaikki toimitukset; kävele pimeälle X-merkillä valkoisen maton yli ja luo lista nimeltä materials. Käytä sitä tallentaaksesi operator.concat()-funktion arvon, käyttäen argumentteina listoja delivery_1 ja delivery_2. Tämä yhdistää nopeasti molemmat listat yhdeksi listaksi. Pöydällä käytä esikoodattua write()-funktiota muuttujan materials kanssa, jotta saat kirjattua kaikki rakennukseen toimitetut materiaalit.
Lopuksi kävele pimeälle X-merkillä oranssin maton yli; täällä on annettu ennakkoedellytyksiä rakennuksen aloittamiselle, ja yksi tärkeimmistä merkinnöistä on, kuinka paljon puuta tarvitaan aluksi tonneina. Tarkista, kuinka paljon puuta on toimitettu koko toimituksessa, ja ilmoita se käyttämällä speak()-funktiota yhdessä operator.countOf()-funktion kanssa. Ensimmäiseksi argumenttina anna luomasi materials-lista ja sen jälkeen merkkijono "wood"; tämä palauttaa, kuinka monta kertaa puu esiintyy materials-listassa. Tämä havainnollistaa, kuinka operator-funktioita voidaan käyttää itsenäisesti ilman, että niitä tallennetaan objektiin, kuten näin: player.speak(operator.countOf(materials,"wood")). Tämä suorittaa tason loppuun.