Curs Avansat de Dezvoltare Python
Capitolul
>
Nivel
Clase Avansate
Supraincarcare a operatorilor de comparație
Obiectiv
Verifică și etichetează corespunzător livrările folosind Suprascrierea Comparativă.
Molozul de expediere are niște butoaie de vin gata să fie transportate către magazine, însă acestea trebuie apoi etichetate și pregătite astfel încât lucrătorii să le poată selecta și expedia fără probleme. Pentru a face acest lucru, trebuie să folosești Suprascrierea Comparativă, similar cu Suprascrierea Operatorilor învățată în capitolul anterior, trebuie să suprascrii o clasă, de data aceasta cu operatori de comparație.
Există trei (3) comenzi în doc, fiecare cu două (2) butoaie. Fiecare comandă are un semn menit să evidențieze raportul de greutate între butoaiele din comandă. Există o clasă definită în editor, numită barrel, care îți permite să folosești Suprascrierea Comparativă. De asemenea, sunt definite trei (3) funcții în editor: less_than(), greater_than() și equal_to(). Aceste funcții sunt folosite pentru a documenta raportul de greutate pe semne.
Începe prin a te deplasa spre marcajele X întunecate și luminoase de pe covorul roșu și îndreaptă-te către butoaie, folosește funcția read() pentru a determina numele vinului din butoi, precum și greutatea butoiului, astfel: await player.read(). Creează obiecte pentru butoaiele întunecate și luminoase, folosind clasa barrel, și adaugă informațiile identificate cu funcția read(). Odată ce obiectele au fost create, creează un alt obiect care compară ambele obiecte. De exemplu:
red_barrel_dark = barrel("Wine name", 000) red_barrel_light = barrel("Wine name", 000) red_barrel_compare = red_barrel_dark < red_barrel_light
Asigură-te că scrii numele vinului în obiectul clasei barrel exact așa cum este afișat în mesajul care apare atunci când folosești read().
Creează obiectele folosind convențiile de denumire conform marcajelor de pe covorul și culoarea X. Pentru covorul roșu, atunci când compari butoaiele, folosește operatorul < pentru a verifica dacă butoiul întunecat are o greutate mai mică decât cel luminos. Pentru a finaliza acest segment, deplasează-te spre marcajul X auriu de pe covorul roșu și îndreaptă-te către semn. Folosește funcția less_than() cu obiectul de comparație pentru a contura raportul de greutate al butoaielor, astfel: less_than(red_barrel_compare) .
În continuare, deplasează-te spre marcajele X întunecate și luminoase de pe covorul verde și repetă același proces. Folosește funcția read() la marcajele X întunecate și luminoase și creează obiectele corespunzătoare cu aceste informații. Pentru obiectul de comparație de pe covorul verde, de data aceasta vom folosi operatorul > pentru a verifica dacă butoiul întunecat are o greutate mai mare decât cel luminos. Deplasează-te spre marcajul X auriu de pe covorul verde și îndreaptă-te către semn. Folosește funcția greater_than() cu obiectul de comparație pentru a contura raportul de greutate al butoaielor, astfel: greater_than(green_barrel_compare) .
Deplasează-te spre marcajele X întunecate și luminoase de pe covorul albastru și repetă același proces. Folosește funcția read() la marcajele X întunecate și luminoase și creează obiectele corespunzătoare cu aceste informații. Pentru obiectul de comparație de pe covorul albastru, de data aceasta vom folosi operatorul == pentru a verifica dacă butoiul întunecat are aceeași greutate ca cel luminos. Deplasează-te spre marcajul X auriu de pe covorul albastru și îndreaptă-te către semn. Folosește funcția equal_to() cu obiectul de comparație pentru a contura raportul de greutate al butoaielor, astfel: equal_to(blue_barrel_compare) .
Odată ce toate comenzile au fost etichetate, deplasează-te spre marcajul X auriu de pe covorul portocaliu de la ieșirea din doc. Îndreaptă-te către semn și folosește funcția write() pentru a nota ce se află pe fiecare comandă; scrie numele fiecărui butoi conform obiectelor pe care le-ai creat, de exemplu, pentru butoaiele de pe covorul roșu: red_barrel_dark.name , red_barrel_light.name. Fă acest lucru pentru toate cele șase butoaie pentru a finaliza nivelul.