Curs Avansat de Dezvoltare Python
Capitolul
>
Nivel
Module de matematică
Modul de operatori
Obiectiv
Verifică și alocă noile comenzi de materiale de construcție pentru terenul agricol folosind modulul operator.
Etajul superior al anexei are câteva birouri care păstrează registrele de inventar și comenzile pentru materialele de construcție necesare dezvoltării terenului. Există o varietate de instrumente diferite care pot fi folosite pentru a verifica și calcula materialele astfel încât să poată fi utilizate în construcție; pe lângă modulul de matematică și statistică, putem utiliza modulul operator.
Acest modul, import operator, poate fi folosit pentru a simplifica calculele de operatori și pentru a le ambala convenabil în funcții. Poți folosi aceste funcții atât pentru optimizare, cât și pentru a produce valori fără a fi nevoie să creezi un obiect în care să stochezi valorile utilizate la calcule.
operators.eq(): Primește două argumente, verifică dacă argumentele sunt egale între ele.operators.lt(): Primește două argumente, verifică dacă primul argument este mai mic decât al doilea.operators.gt(): Primește două argumente, verifică dacă primul argument este mai mare decât al doilea.operators.floordiv(): Primește două argumente, împarte primul argument la al doilea și aplică echivalentul funcțieimath.floor(), rotunjind rezultatul în jos.operators.mod(): Primește două argumente, returnează restul împărțirii dintre cele două argumente.operators.contains(): Funcția este folosită cu o listă, primește două (2) argumente, primul argument fiind o listă, iar al doilea o valoare pe care dorești să o verifici dacă se află în listă. Returnează:truesaufalseîn funcție de prezența valorii.operators.concat(): Primește două argumente de tip listă, combină cele două liste într-o singură funcție curată, putând fi mai rapidă decât alte metode.operators.countOf(): Primește două argumente, o listă și o valoare, pentru a verifica de câte ori apare acea valoare în listă. Returnează numărul de instanțe în care valoarea este prezentă.
Pentru început, mergi către semnul X întunecat deasupra covorașelor colorate în roșu, albastru și verde. Există șase (6) constante: red_order, blue_order, green_order, care reprezintă comenzile pentru materiale și: red_req, blue_req, green_req care reprezintă cantitățile necesare pentru construcție.
La semnul X întunecat deasupra covorașului roșu, folosește funcția read() pentru a verifica cantitatea necesară de materiale. Creează o variabilă numită red_verification și folosește funcția operator.eq() cu constantele red_order și red_req, astfel: red_verification = operator.eq(red_order,red_req). Folosește funcția write() predefinită cu red_verification pentru a afișa rezultatul.
Pe semnele X de pe covorașele albastre și verzi, repetă același proces, folosind funcția read() și creând variabilele: blue_verification și green_verification. Pentru variabila albastră, stochează rezultatul funcției operator.lt() folosind constantele blue_order și blue_req pentru a verifica dacă comanda este mai mică decât ceea ce este necesar. Pentru variabila verde, stochează rezultatul funcției operator.gt() folosind constantele green_order și green_req pentru a verifica dacă comanda este mai mare decât materialele necesare. Folosește funcțiile write() predefinite cu funcțiile de verificare corespunzătoare fiecărui covoraș colorat.
Apoi, mergi la semnul X luminos și, pe birou, folosește funcția read() pentru a verifica comenzile care au fost deja plasate și sunt în curs de livrare. În registrul comenzilor vei găsi valorile a două constante: main_order și sub_order, precum și numărul de secțiuni în care materialele trebuie împărțite. După ce ai citit registrul, creează o variabilă numită allocations și stochează rezultatul funcției operator.floordiv() pentru a împărți valoarea main_order la numărul de secțiuni descrise în registru, astfel: allocations = operator.floordiv(main_order, -add sections-). Aceasta împarte comanda și rotunjește rezultatul în jos. Folosește funcția write() predefinită cu variabila allocations pentru a nota rezultatul.
Mergi la semnul X auriu și creează o variabilă numită remainder, stochează rezultatul obținut cu operator.mod() și adună constantele main_order și sub_order pentru a obține restul celor două comenzi. Pe birou, folosește funcția write() predefinită și adaugă variabila remainder pentru a nota rezultatul.
Îndreaptă-te către semnul X întunecat deasupra covorașului mov, unde vom verifica dacă livrarea uneltelor necesare pentru construcție a avut loc. Avem două constante de tip listă, delivery_1 și delivery_2, și vom verifica dacă uneltele au fost livrate în prima livrare. Creează o variabilă numită tools și stochează rezultatul funcției operator.contains(), pentru primul argument adaugă lista delivery_1 și pentru al doilea argument adaugă șirul de caractere “tools”. Acest lucru va verifica dacă uneltele sunt prezente în livrare, astfel: tools = operator.contains(delivery_1,"tools"). După ce ai terminat, pe birou, folosește funcția write() predefinită cu variabila tools pentru a nota dacă uneltele au fost livrate cu succes.
Următorul pas este verificarea tuturor livrărilor. Mergi către semnul X întunecat deasupra covorașului alb și creează o listă numită materials. Folosește această listă pentru a stoca rezultatul funcției operator.concat(), folosind listele delivery_1 și delivery_2 ca argumente. Aceasta va îmbina rapid cele două liste într-o singură listă. Pe birou, folosește funcția write() predefinită cu variabila materials pentru a nota toate materialele care au fost deja livrate pentru construcție.
În final, mergi la semnul X întunecat deasupra covorașului portocaliu, unde sunt scrise câteva cerințe preliminare pentru începerea construcției, una dintre notările principale fiind cantitatea de lemn necesară la început, exprimată în tone. Verifică câte bucăți de lemn au fost livrate în toată livrarea și anunță rezultatul, folosind funcția speak() împreună cu funcția operator.countOf(). Pentru primul argument, adaugă lista materials pe care ai creat-o, urmată de șirul de caractere “wood”, ceea ce va returna de câte ori apare lemnul în lista materials. Acest exemplu ilustrează cum funcțiile din modulul operator pot fi folosite independent, fără a fi nevoie de un obiect pentru stocarea lor, astfel: player.speak(operator.countOf(materials,"wood")). Aceasta va finaliza nivelul.