This shows you the differences between two versions of the page.
asc:laboratoare:01 [2021/03/16 18:46] giorgiana.vlasceanu [Resurse] |
asc:laboratoare:01 [2024/02/29 13:27] (current) giorgiana.vlasceanu [Resurse] |
||
---|---|---|---|
Line 26: | Line 26: | ||
<note important> | <note important> | ||
- | În cadrul laboratoarelor vom lucra doar cu Python 3.x (de preferat versiunea 3.8, latest version), nu și cu versiunile 2.x. Python nu oferă backwards compatibility astfel încât programe scrise pentru o versiune pot să genereze erori de interpretare pe o altă versiune. De asemenea, Python3 este în mod intenționat incompatibil cu versiunile 2.x, explicații asupra acestui lucru puteți citi și în [[http://docs.python.org/3/whatsnew/3.0.html | articolul]] lui Guido van Rossum, autorul Python-ului. | + | În cadrul laboratoarelor vom lucra doar cu Python 3.x (de preferat ultima versiune stabilă), nu și cu versiunile 2.x. Python nu oferă backwards compatibility astfel încât programe scrise pentru o versiune pot să genereze erori de interpretare pe o altă versiune. De asemenea, Python3 este în mod intenționat incompatibil cu versiunile 2.x, explicații asupra acestui lucru puteți citi și în [[http://docs.python.org/3/whatsnew/3.0.html | articolul]] lui Guido van Rossum, autorul Python-ului. |
</note> | </note> | ||
Line 34: | Line 34: | ||
<code bash> | <code bash> | ||
$ python | $ python | ||
- | Python 3.6.9 (default, Nov 7 2019, 10:44:02) | + | Python 3.9.16 (default, Dec 7 2022, 10:16:11) |
- | [GCC 8.3.0] on linux | + | [GCC 9.4.0] on linux |
Type "help", "copyright", "credits" or "license" for more information. | Type "help", "copyright", "credits" or "license" for more information. | ||
>>> | >>> | ||
Line 49: | Line 49: | ||
</code> | </code> | ||
- | Pe un system Windows se poate descărca versiunea [[https://www.python.org/downloads/release/python-381/ | 3.8.1]]. După instalare se poate adăuga calea către executabilul Python în variabila globală PATH, pentru a putea fi folosit din orice terminal. Acest lucru se poate face mai ușor selectând opțiunea Add Python to PATH la începutul instalării. | + | Pe un system Windows se poate descărca de [[https://www.python.org/downloads | aici]]. După instalare se poate adăuga calea către executabilul Python în variabila globală PATH, pentru a putea fi folosit din orice terminal. Acest lucru se poate face mai ușor selectând opțiunea Add Python to PATH la începutul instalării. |
==== Tools ==== | ==== Tools ==== | ||
Line 351: | Line 351: | ||
==== Dicționare ==== | ==== Dicționare ==== | ||
- | O structură dicționar este un set //neordonat// de //chei// și //valori// în care valoarea poate fi cautată folosindu-se cheia. Cheile sunt obiecte [[http://docs.python.org/3/glossary.html#term-hashable|hashable]], ceea ce presupune că au o funcție hash ce întoarce întotdeauna aceeași valore pentru obiectul respectiv. **Atenție!** listele, dicționarele și alte tipuri de date //mutable// //nu// sunt //hashable//, deci folosirea lor drept chei nu este posibilă. | + | O structură dicționar este un set //neordonat// de //chei// și //valori// în care valoarea poate fi cautată folosindu-se cheia. Cheile sunt obiecte [[http://docs.python.org/3/glossary.html#term-hashable|hashable]], ceea ce presupune că au o funcție hash ce întoarce întotdeauna aceeași valoare pentru obiectul respectiv. **Atenție!** listele, dicționarele și alte tipuri de date //mutable// //nu// sunt //hashable//, deci folosirea lor drept chei nu este posibilă. |
* dicționarele sunt declarate folosind acolade, elementele sunt de forma ''cheie:valoare'', despărțite de virgule. | * dicționarele sunt declarate folosind acolade, elementele sunt de forma ''cheie:valoare'', despărțite de virgule. | ||
* ordinea de stocare este arbitrară, iar cheile pot să fie de tipuri diferite | * ordinea de stocare este arbitrară, iar cheile pot să fie de tipuri diferite | ||
Line 702: | Line 702: | ||
===== Exerciții ===== | ===== Exerciții ===== | ||
- | Folosind scheletul de cod implementați un //CoffeeMaker//. Acesta primește comenzi de la utilizator (e.g. să facă o cafea) și afișează rezultatele/mesajele. Comenzile sunt definite în modulul ''coffee_maker''. Puteți personaliza mesajele afișate, resursele, puteți alege ce structuri de date să folosiți etc. | + | Folosind scheletul de cod implementați un //CoffeeMaker//. Acesta primește comenzi de la utilizator (e.g. să facă o cafea) și afișează rezultatele/mesajele. Comenzile sunt definite în modulul ''task0''. Puteți personaliza mesajele afișate, resursele, puteți alege ce structuri de date să folosiți etc. |
- | - Începeți rezolvarea exercițiului prin rularea modulului coffee_maker.py. | ||
- | - Deschideți apoi modulul, citiți comentariile: | ||
- | * ce trebuie să folosiți din construcțiile de limbaj prezentate în acest laborator | ||
- | * comenzile pe care să le implementați | ||
- | * exemplul | ||
- | * implementarea tutoror comenzilor din schelet | + | **Task 1** - Implementați comenzile din fisierul coffee_maker.py |
- | * folosirea [[asc:laboratoare:01#functii|funcțiilor]] și a blocului [[asc:laboratoare:01#main-ul|__main__]] | + | * Urmăriți exemplu dat pentru a vedea comenzile și rezultatul lor |
- | * lucrul cu [[asc:laboratoare:01#liste_tupluri_si_elemente_de_programare_functionala|liste sau/și dicționare]] | + | * folosirea [[asc:laboratoare:01#functii|funcțiilor]] și a blocului [[asc:laboratoare:01#main-ul|__main__]] |
- | * folosiți cel puțin o dată o [[https://docs.python.org/3.7/library/stdtypes.html#string-methods|funcție a stringurilor]] (e.g. strip(), lower(), format()) și un alt mod de a afișare în afară de cel cu concatenare (e.g. interpolare cu %, format()) | + | * lucrul cu [[asc:laboratoare:01#liste_tupluri_si_elemente_de_programare_functionala|liste sau/și dicționare]] |
- | * rulați //pylint3 coffee_maker.py//, observați statisticile și aduceți cel puțin o îmbunatățire code-style-ului (dacă e cazul) | + | * folosiți cel puțin o dată o [[https://docs.python.org/3.7/library/stdtypes.html#string-methods|funcție a stringurilor]] (e.g. strip(), lower(), format()) și un alt mod de a afișare în afară de cel cu concatenare (e.g. interpolare cu %, format()) |
- | * citiți rețetele pentru cafea din fișierele oferite în directorul //recipes// din scheletul de cod. Implementați citirea într-un modul separat (e.g. cel oferit în schelet) | + | * rulați //pylint coffee_maker.py//, observați statisticile și aduceți cel puțin o îmbunătățire code-style-ului (dacă e cazul) |
+ | |||
+ | <note tip>Instalare pylint: | ||
+ | sudo apt install pylint3 | ||
+ | </note> | ||
+ | |||
+ | **Task 2** - citiți rețetele pentru cafea din fișierele oferite în directorul //recipes//. Implementați citirea în modulul load_recipes.py. | ||
Disclaimer: Recomandăm scrierea în engleză a documentației, comentariilor și a numelor de variabile, funcții, clase, module atât la laborator cât și la teme. Încercăm să vă oferim schelete de cod care să respecte acest lucru. | Disclaimer: Recomandăm scrierea în engleză a documentației, comentariilor și a numelor de variabile, funcții, clase, module atât la laborator cât și la teme. Încercăm să vă oferim schelete de cod care să respecte acest lucru. | ||
Line 726: | Line 728: | ||
</note> | </note> | ||
- | <note tip>Recomandăm parcurgerea acasă și a [[.:old-exercises|exercițiilor]] din anii trecuți sau a materialelor recomandate în secțiunea [[.:01#referinte|Referințe]] pentru a vă familiariza mai bine cu pythonul pentru următoarele două laboratoare și pentru tema 1.</note> | + | <note tip>Recomandăm parcurgerea acasă și a [[.:old-exercises|exercițiilor]] din anii trecuți sau a materialelor recomandate în secțiunea [[.:01#referinte|Referințe]] pentru a vă familiariza mai bine cu limbajul de programare Python pentru următoarele două laboratoare și pentru tema 1.</note> |
===== Resurse ===== | ===== Resurse ===== | ||
* <html><a class="media mediafile mf_pdf" href=":asc:lab1:index?do=export_pdf">PDF laborator</a></html> | * <html><a class="media mediafile mf_pdf" href=":asc:lab1:index?do=export_pdf">PDF laborator</a></html> | ||
* {{:asc:lab1:lab1-skel.zip|Schelet laborator}} | * {{:asc:lab1:lab1-skel.zip|Schelet laborator}} | ||
- | * {{:asc:lab1:lab1-sol.zip|Soluție laborator}} | ||
+ | <hidden> | ||
+ | * {{:asc:lab1:lab1-sol.zip|Soluție laborator}} | ||
+ | </hidden> | ||
* [[.:old-exercises|Exerciții din alți ani]] | * [[.:old-exercises|Exerciții din alți ani]] | ||