Fejlett Python fejlesztési tanfolyam
Fejezet
>
Szint
Matematikai modulok
Operátor modul
Cél
Ellenőrizze és ossza el az új mezőgazdasági építőanyag megrendeléseit az operator modul segítségével.
A melléképület felső emeletén olyan irodák találhatók, amelyek a készlet és az új terület fejlesztéséhez szükséges építőanyag megrendeléseinek nyilvántartását tartalmazzák. Számos különböző eszköz áll rendelkezésre az anyagok ellenőrzésére és kiszámítására, hogy azok az építkezéshez felhasználhatóak legyenek; a matematikai és statisztikai modul mellett használhatjuk az operator modult is.
Ez a modul, import operator, az operátorszámítások egyszerűsítésére és kényelmesen függvényekbe csomagolására szolgál. Ezeket a függvényeket optimalizálásra, illetve értékek előállítására is használhatjuk anélkül, hogy létrehoznánk egy objektumot az értékek tárolására.
operators.eq(): Két argumentumot vesz, ellenőrzi, hogy az argumentumok megegyeznek-e.operators.lt(): Két argumentumot vesz, ellenőrzi, hogy az első argumentum kisebb-e a másodiknál.operators.gt(): Két argumentumot vesz, ellenőrzi, hogy az első argumentum nagyobb-e a másodiknál.operators.floordiv(): Két argumentumot vesz, az első argumentumot elosztja a másodikkal, és alkalmazza amath.floor()megfelelőjét, lefelé kerekítve az eredményt.operators.mod(): Két argumentumot vesz, visszaadja a két argumentum osztásából származó maradékot.operators.contains(): Ez a függvény egy listával együtt használható, két (2) argumentumot vesz: az első egy lista, a második pedig egy olyan érték, amelynek jelenlétét ellenőriznénk a listában. Visszaadja:truevagyfalse, attól függően, hogy az érték benne van-e.operators.concat(): Két lista argumentumot vesz, és egy tiszta függvény segítségével összefűzi a két listát, hatékonyabb lehet, mint más módszerek.operators.countOf(): Két argumentumot vesz, egy listát és egy értéket, amely alapján megszámolja, hányszor fordul elő az adott érték a listában. Visszaadja az érték előfordulásainak számát.
A kezdéshez sétálj el a sötét X jelzéshez a piros, kék és zöld színű szőnyegek felett. Hat (6) állandó létezik: red_order, blue_order, green_order, amelyek az anyagok megrendeléseit jelentik, valamint: red_req, blue_req, green_req, amelyek az építkezéshez szükséges mennyiségeket határozzák meg.
A piros szőnyeg feletti sötét X jelzésnél használd a read() függvényt az anyagok szükséges mennyiségének ellenőrzésére. Hozz létre egy red_verification nevű változót, és használd az operator.eq() függvényt a red_order és red_req állandókkal, például így: red_verification = operator.eq(red_order,red_req). Ezután az előre megírt write() függvénnyel jelenítsd meg az eredményt a red_verification értékével.
A kék és zöld X jelzéseknél ismételd meg ugyanezt a folyamatot: használd a read() függvényt, és hozz létre két változót: blue_verification és green_verification. A kék változóhoz tárold el az operator.lt() értékét a blue_order és blue_req állandókkal, hogy ellenőrizze, kisebb-e a megrendelés a szükséges mennyiségnél. A zöld változóhoz tárold el az operator.gt() értékét a green_order és green_req állandókkal, hogy ellenőrizze, nagyobb-e a megrendelés, mint az építkezéshez szükséges anyagok mennyisége. Használd az előre megírt write() függvényeket a megfelelő, színezett szőnyegekhez tartozó ellenőrző függvényekkel.
Ezután sétálj el a világos X jelzéshez, és az asztalon használd a read() függvényt a már leadott, úton lévő megrendelések ellenőrzésére. A megrendelési könyvben megtalálhatók két változó állandóra vonatkozó érték: main_order és sub_order, valamint annak az információja, hogy hány részre kell osztani az anyagokat. A könyv elolvasása után hozz létre egy allocations nevű változót, és tárold el benne az operator.floordiv() értékét, amely a main_order értékét elosztja a könyvben leírt szekciók számával, így: allocations = operator.floordiv(main_order, -add sections-). Ez elosztja a megrendelést, és lefelé kerekíti az eredményt. Ezután az előre megírt write() függvénnyel jelenítsd meg az eredményt az allocations változó felhasználásával.
Sétálj el az arany X jelzéshez, és hozz létre egy remainder nevű változót, amely az operator.mod() eredményét tárolja, úgy, hogy hozzáadod a main_order és a sub_order állandókat, hogy megkapd a két megrendelés közötti maradékot. Az asztalon használd az előre megírt write() függvényt, és add hozzá a remainder változót az eredmény megjelenítéséhez.
Haladj el a lila szőnyeg feletti sötét X jelzéshez, ahol ellenőrizni fogjuk az építkezéshez szükséges eszközök kiszállítását. Két lista állandónk van, delivery_1 és delivery_2, és meg fogjuk nézni, hogy az eszközök az első kiszállítás során érkeztek-e meg. Hozz létre egy tools nevű változót, és tárold el benne az operator.contains() eredményét, úgy, hogy az első argumentumként megadod a delivery_1 listát, a második argumentumként pedig a "tools" stringet. Ez így ellenőrzi, hogy az eszközök benne vannak-e a kiszállításban: tools = operator.contains(delivery_1,"tools"). Amint ez megtörtént, az asztalon használd az előre megírt write() függvényt a tools változóval, hogy jelezd, sikeresen megérkeztek-e az eszközök.
A következő lépés az összes kiszállítás ellenőrzése: haladj el a fehér szőnyeg feletti sötét X jelzéshez, és hozz létre egy materials nevű listát. Ezzel tárold el az operator.concat() értékét úgy, hogy átadod a delivery_1 és delivery_2 listákat argumentumként. Ez a függvény gyorsan egy egységes listává egyesíti a két listát. Az asztalon használd az előre megírt write() függvényt a materials változóval, hogy rögzítsd az építkezéshez már kiszállított anyagokat.
Végül sétálj el az narancssárga szőnyeg feletti sötét X jelzéshez, ahol az építkezés megkezdéséhez szükséges előfeltételek vannak leírva, egyik fő megjegyzés, hogy mennyi fa szükséges a kezdeti szakaszban tonnában. Ellenőrizd, hogy összesen mennyi fa érkezett meg a kiszállítások során, és jelentsd be ezt; használd a speak() függvényt az operator.countOf() függvénnyel. Az első argumentumban add meg az általad létrehozott materials listát, majd a "wood" stringet, ami visszaadja, hogy hányszor fordul elő a fa a materials listában. Ez szemlélteti, hogy az operátor függvények hogyan használhatók önállóan anélkül, hogy objektumba kellene tárolni őket, például így: player.speak(operator.countOf(materials,"wood")). Ezzel befejeződik a szint.