Coding for KidsCoding for Kids
Niveluri CreativeProvocăriGhid pentru Profesori
Votează pentru funcții
Curs Avansat de Dezvoltare Python
Capitolul
>
Nivel

Generatoare
Crearea unui Generator

Uneori, s-ar putea să dorești să generezi valori în mod constant, mai degrabă decât un rezultat unic. Similar cu modul în care funcționează funcțiile, generatorii sunt scriși și executați în același mod, cu excepția faptului că folosesc yield() în loc de return() atunci când produc un rezultat.

În acest exercițiu trebuie să umpli sticle cu lapte din rezervoarele de la grajd. Folosește un generator pentru a itera umplerea sticlelor și asigură-te că orice surplus de lapte este colectat din rezervoare.

Guide

Obiectiv

Umpleți sticlele cu lapte prin pomparea rezervoarelor de lapte folosind generatoare.

Mașinile care depozitează laptele de vacă sunt aproape pline, trebuie să îmbuteliați laptele și să îl depozitați înainte să se strice. Acesta poate fi un pic dificil de realizat folosind mijloace normale și cantitatea de lapte pe care o puteți extrage poate varia puțin. Din fericire, puteți folosi generatoare pentru a face acest proces fără probleme și direct.

Există două (2) rezervoare cu lapte care trebuie să aibă laptele pompat și îmbuteliat. Fiecare mașină are compartimente care depozitează laptele, acestea fiind reprezentate prin constante de listă numite: tank_a și tank_b. În plus, fiecare rezervor tinde să aibă un surplus rămas pe care îl puteți colecta.

Generatoarele urmează aceeași sintaxă ca funcțiile, dar vor folosi yield în loc de return pentru ieșirea lor. Configurați un generator numit fill() și setați-l cu argumentul list, aici ar trebui să introduceți constantele menționate în paragraful de mai sus.

def fill(list): for x in range(3): yield list[x] yield 5

Generatorul citește datele din cele trei (3) câmpuri ale constantelor listă, reprezentate prin compartimentele din mașină, și adaugă un surplus la sfârșit, care este cinci (5).

Colectați obiectul coșului din câmp pentru a obține acces la sticlele necesare umplerii și mergeți la cele două (2) semne X pentru a colecta laptele folosind un ciclu for.

Datorită declarației yield, valorile produse de generator pot fi citite direct dintr-un ciclu for de asemenea. Configurați unul care folosește funcția collect() pentru a obține „laptele” din mașină. Urmați acest lucru folosind speak() pentru a verifica cât lapte a fost depozitat în fiecare sticlă. De exemplu:

for bottles in fill(tank_a): player.collect("milk") player.speak("%d pints of milk collected" % (bottles))

Scrieți și utilizați acest ciclu for pe ambele semne X, pe semnul X luminos folosiți argumentul tank_a și pe semnul X întunecat folosiți argumentul tank_b pentru a completa nivelul.

Carte de Cod