Gevorderde Python-ontwikkelingscursus
Hoofdstuk
>
Niveau
Wiskundige modules
Operator Module
Doelstelling
Controleer en wijs de nieuwe bestellingen voor landbouwbouwmaterialen toe door gebruik te maken van de operator module.
De bovenverdieping van het aanbouwgebouw heeft enkele kantoren die logboeken bevatten van de voorraad en bestellingen voor de bouwmaterialen die nodig zijn voor de nieuwe landontwikkeling. Er zijn allerlei verschillende tools die gebruikt kunnen worden om de materialen te verifiëren en te berekenen zodat ze voor de constructie ingezet kunnen worden, naast de wiskunde- en statistiekmodule kunnen we de operator module gebruiken.
Deze module, import operator, kan gebruikt worden om operatorberekeningen te vereenvoudigen en ze handig in functies te verpakken. Je kunt deze functies zowel voor optimalisatie als voor het produceren van waarden gebruiken zonder dat je een object hoeft aan te maken om de waarden voor de berekeningen op te slaan.
operators.eq(): Neemt twee argumenten, controleert of de argumenten gelijk aan elkaar zijn.operators.lt(): Neemt twee argumenten, controleert of het eerste argument kleiner is dan het tweede argument.operators.gt(): Neemt twee argumenten, controleert of het eerste argument groter is dan het tweede argument.operators.floordiv(): Neemt twee argumenten, deelt het eerste argument door het tweede argument en past het equivalent vanmath.floor()toe, waarbij het resultaat naar beneden wordt afgerond.operators.mod(): Neemt twee argumenten, retourneert de rest van de deling tussen de twee argumenten.operators.contains(): Functie wordt gebruikt met een lijst, neemt twee (2) argumenten, het eerste argument is een lijst, het tweede is een waarde waarvan je wilt controleren of deze in de lijst zit. Retourneert:trueoffalseafhankelijk van of de waarde aanwezig is of niet.operators.concat(): Neemt twee lijstargumenten, combineert de twee lijsten op een enkele nette manier, kan sneller zijn dan andere methoden.operators.countOf(): Neemt twee argumenten, een lijst en een waarde om te controleren hoe vaak die waarde in de lijst voorkomt. Retourneert het aantal keren dat de waarde aanwezig is in de lijst.
Om te beginnen, loop naar het donkere X-teken boven de rode, blauwe en groene gekleurde tapijten. Er zijn zes (6) constanten: red_order, blue_order, green_order, die bestellingen voor materialen zijn, en: red_req, blue_req, green_req die de vereiste hoeveelheden voor de constructie aangeven.
Bij het donkere X-teken boven het rode tapijt, gebruik de functie read() om de vereiste hoeveelheid materialen te controleren. Maak een variabele genaamd red_verification en gebruik de functie operator.eq() met de constanten red_order en red_req, als volgt: red_verification = operator.eq(red_order,red_req). Gebruik de vooraf geschreven functie write() om het resultaat weer te geven met red_verification.
Bij de blauwe en groene X-tekens herhaal je hetzelfde proces, gebruik de functie read() en maak de variabelen: blue_verification en green_verification. Sla in de blauwe variabele de waarde op van operator.lt() met de constanten blue_order en blue_req om te controleren of de bestelling minder is dan wat vereist is. Sla in de groene variabele de waarde op van operator.gt() met de constanten green_order en green_req om te controleren of de bestelling meer is dan de vereiste materialen. Gebruik de vooraf geschreven functies write() met de respectievelijke verificatiefuncties die overeenkomen met de gekleurde tapijten.
Loop vervolgens naar het lichte X-teken en gebruik op het bureau de functie read() om de bestellingen te controleren die al geplaatst zijn en onderweg zijn. In het bestelboek vind je de waarden van twee variabele constanten: main_order en sub_order evenals het aantal secties waarover de materialen verdeeld moeten worden. Na het lezen van het bestelboek, maak een variabele genaamd allocations en sla de waarde op van operator.floordiv() om de waarde van main_order te delen door het aantal secties dat in het boek beschreven staat, als volgt: allocations = operator.floordiv(main_order, -add sections-) deze deelt de bestelling en rondt het resultaat naar beneden af. Gebruik de vooraf geschreven functie write() met de variabele allocations om het resultaat te noteren.
Loop naar het gouden X-teken en maak een variabele genaamd remainder. Sla het resultaat op van operator.mod() en tel zowel de constanten main_order als sub_order op om de rest van de twee bestellingen te verkrijgen. Gebruik op het bureau de vooraf geschreven functie write() en voeg de variabele remainder toe om het resultaat te noteren.
Ga naar het donkere X-teken boven het paarse tapijt, hier gaan we verifiëren of de levering van de gereedschappen die nodig zijn voor de constructie heeft plaatsgevonden. We hebben twee lijstconstanten, delivery_1 en delivery_2, en we controleren of de gereedschappen in de eerste levering zijn geleverd. Maak een variabele genaamd tools en sla het resultaat op van operator.contains(): voeg als eerste argument de lijst delivery_1 toe en als tweede argument de string “tools”. Dit controleert of de gereedschappen aanwezig zijn in de levering, als volgt: tools = operator.contains(delivery_1,"tools"). Als dit is gedaan, gebruik op het bureau de vooraf geschreven functie write() met de variabele tools om op te schrijven of de gereedschappen succesvol zijn geleverd.
Vervolgens is het tijd om alle leveringen te controleren, ga naar het donkere X-teken boven het witte tapijt en maak een lijst genaamd materials. Gebruik deze om de waarde van operator.concat() op te slaan, waarbij je de lijsten delivery_1 en delivery_2 als argumenten gebruikt. Dit voegt de twee lijsten snel samen tot één enkele lijst. Gebruik op het bureau de vooraf geschreven functie write() met de variabele materials om nota te nemen van alle materialen die al voor de constructie zijn geleverd.
Als laatste loop je naar het donkere X-teken boven het oranje tapijt, hier staan enkele vereisten geschreven voor het starten van de constructie, een van de belangrijkste notities is hoeveel hout er aan het begin in tonnage nodig is. Controleer hoeveel hout er in de gehele levering is geleverd en kondig dit aan, gebruik de functie speak() met de functie operator.countOf(). Voeg als eerste argument de lijst materials toe die je hebt gemaakt, gevolgd door de string “wood”. Dit geeft het aantal keren terug dat hout voorkomt in de materials lijst. Dit illustreert hoe operatorfuncties onafhankelijk gebruikt kunnen worden zonder een object aan te maken om ze in op te slaan, als volgt: player.speak(operator.countOf(materials,"wood")). Hiermee voltooi je het level.