Avancerad Pythonutvecklingskurs
Kapitel 8
>
NivÄ 5
MÄl
Verifiera och allokera bestÀllningarna för byggmaterial till den nya jordbruksmarken genom att anvÀnda operator-modulen.
ĂvervĂ„ningen i annexet har nĂ„gra kontor som hĂ„ller loggar över lagret och bestĂ€llningarna av byggmaterial som behövs för den nya markutvecklingen. Det finns en mĂ€ngd olika verktyg som kan anvĂ€ndas för att verifiera och berĂ€kna materialen sĂ„ att de kan anvĂ€ndas vid konstruktionen; förutom matematik- och statistikmodulen kan vi anvĂ€nda operator-modulen.
Den hÀr modulen, import operator, kan anvÀndas för att förenkla operatorberÀkningar och praktiskt packa in dem i funktioner. Du kan anvÀnda dessa funktioner bÄde för optimering och för att producera vÀrden utan att behöva skapa ett objekt för att lagra berÀkningsvÀrdena.
operators.eq(): Tar tvÄ argument, kontrollerar om argumenten Àr lika med varandra.operators.lt(): Tar tvÄ argument, kontrollerar om det första argumentet Àr mindre Àn det andra.operators.gt(): Tar tvÄ argument, kontrollerar om det första argumentet Àr större Àn det andra.operators.floordiv(): Tar tvÄ argument, dividerar det första argumentet med det andra och tillÀmpar motsvarigheten tillmath.floor(), vilket avrundar resultatet nedÄt.operators.mod(): Tar tvÄ argument, returnerar resten vid divisionen mellan de tvÄ argumenten.operators.contains(): Funktionen anvÀnds med en lista, tar tvÄ (2) argument, dÀr det första argumentet Àr en lista och det andra Àr ett vÀrde du vill kontrollera om det finns i listan. Returnerar:trueellerfalseberoende pÄ om vÀrdet finns eller inte.operators.concat(): Tar tvÄ listargument, kombinerar de tvÄ listorna med en enda ren funktion, och kan vara snabbare Àn andra metoder.operators.countOf(): Tar tvÄ argument, en lista och ett vÀrde för att kontrollera hur mÄnga gÄnger vÀrdet förekommer i listan. Returnerar antalet instanser dÀr vÀrdet finns.
För att komma igÄng, gÄ till den mörka X-markeringen över de röda, blÄa och gröna mattorna. Det finns sex (6) konstanter: red_order, blue_order, green_order, vilka Àr bestÀllningar av material, samt: red_req, blue_req, green_req som Àr de nödvÀndiga mÀngderna för konstruktionen.
Vid den mörka X-markeringen pÄ den röda mattan, anvÀnd funktionen read() för att kontrollera den nödvÀndiga mÀngden material. Skapa en variabel med namnet red_verification och anvÀnd funktionen operator.eq() med konstanterna red_order och red_req, pÄ följande sÀtt: red_verification = operator.eq(red_order,red_req). AnvÀnd sedan den förskrivna funktionen write() med red_verification för att visa resultatet.
Vid de blÄa och gröna X-markeringarna, upprepa samma process: anvÀnd funktionen read() och skapa variablerna blue_verification och green_verification. För den blÄ variabeln, lagra vÀrdet frÄn operator.lt() med konstanterna blue_order och blue_req för att kontrollera om bestÀllningen Àr mindre Àn vad som krÀvs. För den gröna variabeln, lagra vÀrdet frÄn operator.gt() med konstanterna green_order och green_req för att kontrollera om bestÀllningen Àr större Àn det material som krÀvs. AnvÀnd de förskrivna funktionerna write() med respektive verifieringsfunktioner som motsvarar de fÀrgade mattorna.
GÄ sedan till den ljusa X-markeringen och anvÀnd funktionen read() vid skrivbordet för att kontrollera de bestÀllningar som redan lagts och Àr pÄ vÀg. I bestÀllningsboken hittar du vÀrdena för tvÄ variabla konstanter: main_order och sub_order, samt antalet sektioner som materialen behöver delas in i. Efter att ha lÀst bestÀllningsboken, skapa en variabel med namnet allocations och lagra vÀrdet frÄn funktionen operator.floordiv() för att dividera vÀrdet main_order med antalet sektioner som anges i boken, sÄ hÀr: allocations = operator.floordiv(main_order, -add sections-). Detta delar bestÀllningen och avrundar resultatet nedÄt. AnvÀnd den förskrivna funktionen write() med variabeln allocations för att notera resultatet.
GÄ till den gyllene X-markeringen och skapa en variabel med namnet remainder, lagra resultatet av operator.mod() och anvÀnd bÄde konstanterna main_order och sub_order för att fÄ fram resten av de tvÄ bestÀllningarna. Vid skrivbordet, anvÀnd den förskrivna funktionen write() och ange variabeln remainder för att visa resultatet.
Gör dig redo att gĂ„ till den mörka X-markeringen över den lila mattan; hĂ€r ska vi verifiera om de verktyg som behövs för konstruktionen har levererats. Vi har tvĂ„ listkonstanter, delivery_1 och delivery_2, och vi kommer att kontrollera om verktygen levererades vid den första leveransen. Skapa en variabel med namnet tools och lagra resultatet frĂ„n operator.contains(), dĂ€r det första argumentet Ă€r listan delivery_1 och det andra argumentet Ă€r strĂ€ngen âtoolsâ. Detta kontrollerar om verktygen finns i leveransen, pĂ„ följande sĂ€tt: tools = operator.contains(delivery_1,"tools"). NĂ€r detta Ă€r klart, anvĂ€nd den förskrivna funktionen write() vid skrivbordet med variabeln tools för att visa om verktygen levererades framgĂ„ngsrikt.
NÀsta steg Àr att kontrollera alla leveranser. GÄ till den mörka X-markeringen över den vita mattan och skapa en lista med namnet materials. AnvÀnd den för att lagra vÀrdet frÄn operator.concat(), med listorna delivery_1 och delivery_2 som argument. Detta kombinerar snabbt de tvÄ listorna till en enda lista. Vid skrivbordet, anvÀnd den förskrivna funktionen write() med variabeln materials för att notera alla material som redan levererats för konstruktionen.
Avslutningsvis, gĂ„ till den mörka X-markeringen över den orangea mattan. HĂ€r finns nĂ„gra förutsĂ€ttningar skrivna för att starta konstruktionen, dĂ€r en av huvudanteckningarna Ă€r hur mycket trĂ€ som behövs i början, mĂ€tt i tonnage. Kontrollera hur mycket trĂ€ som levererades i hela leveransen och meddela det, anvĂ€nd funktionen speak() tillsammans med operator.countOf(). Som första argument, lĂ€gg in listan materials som du skapade, följt av strĂ€ngen âwoodâ. Detta kommer att returnera antalet instanser av trĂ€ som finns i listan materials. Det illustrerar hur operatorfunktioner kan anvĂ€ndas fristĂ„ende utan att de lagras i ett objekt, pĂ„ följande sĂ€tt: player.speak(operator.countOf(materials,"wood")). Detta slutför nivĂ„n.