This shows you the differences between two versions of the page.
gp:laboratoare:01 [2025/02/05 10:16] maria_anca.balutoiu [Setup Python] |
gp:laboratoare:01 [2025/02/05 12:59] (current) maria_anca.balutoiu [Tasks] |
||
---|---|---|---|
Line 7: | Line 7: | ||
* **Automatizare și scripting.** Python este adesea utilizat pentru automatizarea sarcinilor repetitive. | * **Automatizare și scripting.** Python este adesea utilizat pentru automatizarea sarcinilor repetitive. | ||
- | <hidden> | + | Python poate fi descărcat și instalat de [[https://www.python.org/|aici]]. |
- | + | ||
- | + | ||
- | + | ||
- | Sintaxa sa intuitivă și structura clară a codului încurajează bunele practici de programare și îmbunătățesc lizibilitatea, facilitând colaborarea între dezvoltatori. De asemenea, Python este portabil și poate rula pe majoritatea platformelor, inclusiv Windows, macOS și Linux. | + | |
+ | <note important>Odată instalat Python, pentru ușurință sugestia este să adăugați executabilul în path în variabile de mediu.</note> | ||
==== Mediu Virtual ==== | ==== Mediu Virtual ==== | ||
- | În Python, venv este un modul integrat care permite crearea de medii virtuale — spații izolate în care puteți instala pachete Python fără a afecta instalările globale ale sistemului. Acest lucru este util pentru gestionarea dependențelor în proiecte diferite și pentru evitarea conflictelor între versiuni de pachete. | + | În Python, **venv** este un modul integrat care permite crearea de medii virtuale — spații izolate în care se pot instala pachete Python fără a afecta setările globale ale sistemului. Acest lucru este util pentru gestionarea dependențelor în proiecte diferite și pentru evitarea conflictelor între versiuni de pachete. |
- | DOCS.PYTHON.ORG | + | |
- | Crearea unui mediu virtual: | + | Pentru a crea un mediu virtual pentru proiectul curent, într-un terminal se merge în folderul proiectului și se rulează comanda: |
- | Deschideți terminalul sau linia de comandă. | + | <code> |
+ | python3 -m venv virtual_environment_name | ||
+ | </code> | ||
- | Navigați la directorul proiectului dvs. | + | Pe urmă, acest mediu virtual trebuie activat: |
+ | * Pe Unix/macOS: | ||
+ | <code> | ||
+ | source virtual_environment_name/bin/activate | ||
+ | </code> | ||
+ | * Pe Windows: | ||
+ | <code> | ||
+ | virtual_environment_name\Scripts\activate | ||
+ | </code> | ||
- | Rulați comanda: | + | Pentru a dezactiva mediul virtual și a reveni la mediul global, se rulează comanda: |
- | + | <code> | |
- | Pentru Python 3: | + | |
- | + | ||
- | bash | + | |
- | Copiază | + | |
- | Editează | + | |
- | python3 -m venv nume_medii_virtual | + | |
- | Pentru Windows: | + | |
- | + | ||
- | bash | + | |
- | Copiază | + | |
- | Editează | + | |
- | py -m venv nume_medii_virtual | + | |
- | Înlocuiți nume_medii_virtual cu numele dorit pentru mediul dvs. virtual. | + | |
- | PACKAGING.PYTHON.ORG | + | |
- | + | ||
- | Activarea mediului virtual: | + | |
- | + | ||
- | Pe Unix/macOS: | + | |
- | + | ||
- | bash | + | |
- | Copiază | + | |
- | Editează | + | |
- | source nume_medii_virtual/bin/activate | + | |
- | Pe Windows: | + | |
- | + | ||
- | bash | + | |
- | Copiază | + | |
- | Editează | + | |
- | nume_medii_virtual\Scripts\activate | + | |
- | După activare, promptul liniei de comandă ar trebui să afișeze numele mediului virtual, indicând că acesta este activ. | + | |
- | PACKAGING.PYTHON.ORG | + | |
- | + | ||
- | Dezactivarea mediului virtual: | + | |
- | + | ||
- | Pentru a dezactiva mediul virtual și a reveni la mediul global, rulați comanda: | + | |
- | + | ||
- | bash | + | |
- | Copiază | + | |
- | Editează | + | |
deactivate | deactivate | ||
- | Avantajele utilizării venv: | + | </code> |
- | Izolare: Fiecare mediu virtual are propriul set de pachete, prevenind conflictele între proiecte. | + | Avantajele utilizării **venv**: |
- | Gestionarea dependențelor: Permite instalarea versiunilor specifice ale pachetelor necesare pentru un proiect, fără a interfera cu alte proiecte. | + | * **Izolare.** Fiecare mediu virtual are propriul set de pachete, prevenind conflictele între proiecte |
- | Portabilitate: Facilitează replicarea mediului de dezvoltare pe alte sisteme, asigurând consistența între diferite medii de lucru. | + | * **Gestionarea dependențelor.** Permite instalarea versiunilor specifice ale pachetelor necesare pentru un proiect, fără a interfera cu alte proiecte |
- | Utilizarea mediilor virtuale este o practică esențială în dezvoltarea Python, asigurând un control mai bun asupra dependențelor și a configurațiilor proiectelor. | + | * **Portabilitate.** Facilitează replicarea mediului de dezvoltare pe alte sisteme, asigurând consistența între diferite medii de lucru. |
- | </hidden> | + | |
==== Biblioteci Utile ==== | ==== Biblioteci Utile ==== | ||
- | <hidden> | ||
=== Pygame === | === Pygame === | ||
- | Pygame este o bibliotecă open-source pentru Python, concepută pentru dezvoltarea de jocuri video și aplicații multimedia. Aceasta oferă module pentru gestionarea graficii, sunetului și interacțiunii cu utilizatorul, facilitând crearea de jocuri 2D și alte aplicații interactive. | + | Pygame este o bibliotecă open source pentru Python, concepută pentru dezvoltarea de jocuri video și aplicații multimedia. |
- | PYGAME.READTHEDOCS.IO | + | |
- | Istoric și Dezvoltare: | + | Ce putem face cu Pygame: |
+ | * **Grafică.** Pygame permite desenarea de forme, imagini și animații, oferind suport pentru manipularea pixelilor și transformări grafice. | ||
+ | * **Sunet.** Biblioteca include funcționalități pentru redarea și controlul sunetelor și muzicii, permițând integrarea efectelor sonore și a coloanelor sonore în aplicații. | ||
+ | * **Evenimente și Interacțiune.** Gestionarea intrărilor de la tastatură, mouse și alte dispozitive de interacțiune este simplificată, facilitând crearea de interfețe interactive. | ||
+ | * **Gestionarea Sprite-urilor.** Pygame oferă suport pentru gestionarea sprite-urilor și a coliziunilor, esențiale în dezvoltarea jocurilor. | ||
- | Lansată inițial în octombrie 2000, Pygame a fost creată pentru a înlocui proiectul PySDL, al cărui dezvoltare stagnase. De-a lungul anilor, Pygame a evoluat semnificativ, iar în octombrie 2020, cu ocazia celei de-a 20-a aniversări, a fost lansată versiunea 2.0, aducând îmbunătățiri notabile și suport extins pentru diverse platforme. | + | Pentru a folosit Pygame, este necesar să importăm biblioteca în proiect: |
- | EN.WIKIPEDIA.ORG | + | |
- | Caracteristici Cheie: | + | <code> |
+ | python3 -m pip install pygame | ||
+ | </code> | ||
- | Grafică: Pygame permite desenarea de forme, imagini și animații, oferind suport pentru manipularea pixelilor și transformări grafice. | + | <code> |
+ | import pygame | ||
- | Sunet: Biblioteca include funcționalități pentru redarea și controlul sunetelor și muzicii, permițând integrarea efectelor sonore și a coloanelor sonore în aplicații. | + | # Initialize Pygame |
+ | pygame.init() | ||
- | Evenimente și Interacțiune: Gestionarea intrărilor de la tastatură, mouse și alte dispozitive de interacțiune este simplificată, facilitând crearea de interfețe interactive. | + | # Set window properties |
+ | width, height = 800, 600 | ||
+ | screen = pygame.display.set_mode((width, height)) | ||
+ | pygame.display.set_caption('Pygame Example') | ||
- | Gestionarea Sprite-urilor: Pygame oferă suport pentru gestionarea sprite-urilor și a coliziunilor, esențiale în dezvoltarea jocurilor. | + | # Set the drawing colors |
+ | white = (255, 255, 255) | ||
+ | red = (255, 0, 0) | ||
- | Comunitate și Resurse: | + | # Set the coordinates and the dimensions of the square |
+ | x, y = 100, 100 # Upper-left corner | ||
+ | length = 50 # Length of the square | ||
- | Comunitatea Pygame este activă și oferă numeroase resurse, inclusiv tutoriale, documentație și exemple de cod, pentru a ajuta dezvoltatorii să înceapă și să își îmbunătățească proiectele. | + | running = True |
- | PYGAME.READTHEDOCS.IO | + | while running: |
+ | for event in pygame.event.get(): | ||
+ | if event.type == pygame.QUIT: | ||
+ | running = False | ||
- | Pentru a începe cu Pygame, este recomandat să aveți cunoștințe de bază în Python. Instalarea se poate realiza folosind managerul de pachete pip: | + | # Set background color |
+ | screen.fill(white) | ||
- | bash | + | # Draw a square |
- | Copiază | + | pygame.draw.rect(screen, red, (x, y, length, length)) |
- | Editează | + | |
- | pip install pygame | + | # Update the screen |
- | După instalare, puteți crea o fereastră simplă și un ciclu de joc pentru a începe dezvoltarea propriului joc sau aplicație multimedia. | + | pygame.display.flip() |
+ | </code> | ||
=== Pillow === | === Pillow === | ||
- | Pillow este o bibliotecă open-source pentru limbajul de programare Python, destinată procesării și manipulării imaginilor. Aceasta este o continuare a proiectului original Python Imaging Library (PIL), care a fost întrerupt în 2011. Pillow a fost creată pentru a oferi suport actualizat și compatibilitate cu versiunile moderne de Python. | + | Pillow este o bibliotecă open source pentru Python, destinată procesării și manipulării imaginilor. |
- | EN.WIKIPEDIA.ORG | + | |
- | Caracteristici principale: | + | Ce putem face cu Pillow: |
+ | * **Suport extins pentru formate de fișiere.** Pillow poate deschide, manipula și salva o varietate largă de formate de imagine, inclusiv JPEG, PNG, BMP, GIF și TIFF. | ||
+ | * **Manipularea imaginilor.** Biblioteca permite efectuarea de operațiuni precum redimensionarea, decuparea, rotirea și aplicarea de filtre sau efecte asupra imaginilor. | ||
+ | * **Acces la nivel de pixel.** Pillow oferă posibilitatea de a accesa și modifica valorile individuale ale pixelilor, facilitând manipulări detaliate ale imaginilor. | ||
+ | * **Gestionarea transparenței și a măștilor.** Biblioteca suportă manipularea canalelor alfa și aplicarea măștilor pentru a gestiona transparența în imagini. | ||
- | Suport extins pentru formate de fișiere: Pillow poate deschide, manipula și salva o varietate largă de formate de imagine, inclusiv JPEG, PNG, BMP, GIF și TIFF. | + | Pentru a folosit Pillow, este necesar să importăm biblioteca în proiect: |
- | PILLOW.READTHEDOCS.IO | + | |
- | Manipularea imaginilor: Biblioteca permite efectuarea de operațiuni precum redimensionarea, decuparea, rotirea și aplicarea de filtre sau efecte asupra imaginilor. | + | <code> |
- | REALPYTHON.COM | + | python3 -m pip install pillow |
+ | </code> | ||
- | Acces la nivel de pixel: Pillow oferă posibilitatea de a accesa și modifica valorile individuale ale pixelilor, facilitând manipulări detaliate ale imaginilor. | + | <code> |
- | PILLOW.READTHEDOCS.IO | + | from PIL import Image |
- | Gestionarea transparenței și a măștilor: Biblioteca suportă manipularea canalelor alfa și aplicarea măștilor pentru a gestiona transparența în imagini. | + | # Open image |
- | PILLOW.READTHEDOCS.IO | + | image = Image.open('image.jpg') |
- | Instalare: | + | # Resize image |
+ | resized_image = image.resize((800, 600)) | ||
- | Pentru a instala Pillow, puteți utiliza managerul de pachete pip: | + | # Save the resized image |
+ | resized_image.save('resized_image.jpg') | ||
+ | </code> | ||
+ | ==== Tasks ==== | ||
- | bash | + | <note tip>Pentru a genera un număr random, folosiți biblioteca **random**.</note> |
- | Copiază | + | |
- | Editează | + | |
- | pip install Pillow | + | |
- | Exemplu de utilizare: | + | |
- | Iată un exemplu simplu de cod care deschide o imagine, o redimensionează și o salvează într-un nou fișier: | ||
- | |||
- | python | ||
- | Copiază | ||
- | Editează | ||
- | from PIL import Image | ||
- | |||
- | # Deschide imaginea | ||
- | imagine = Image.open('imagine_initiala.jpg') | ||
- | |||
- | # Redimensionează imaginea | ||
- | imagine_redimensionata = imagine.resize((800, 600)) | ||
- | |||
- | # Salvează imaginea redimensionată | ||
- | imagine_redimensionata.save('imagine_redimensionata.jpg') | ||
- | Pillow este o unealtă puternică și flexibilă pentru dezvoltatorii Python care au nevoie de funcționalități de procesare a imaginilor în aplicațiile lor. Pentru documentație detaliată și ghiduri suplimentare, puteți vizita site-ul oficial al Pillow | ||
- | </hidden> | ||
- | ==== Tasks ==== | ||
- Generați un grid de culori alese aleator. | - Generați un grid de culori alese aleator. | ||
- Generați aleator o hartă 2D folosind simboluri (~ pentru apă, # pentru munți, . pentru câmpii). Folosiți probabilități pentru a asigna tipul de teren generat. | - Generați aleator o hartă 2D folosind simboluri (~ pentru apă, # pentru munți, . pentru câmpii). Folosiți probabilități pentru a asigna tipul de teren generat. | ||
- **Bonus 1.** Modificați primul task astfel încât gridul de culori să se regenereze la apăsarea unei taste. | - **Bonus 1.** Modificați primul task astfel încât gridul de culori să se regenereze la apăsarea unei taste. | ||
- **Bonus 2.** Modificați al doilea task astfel încât să salvați harta de simboluri ca o imagine PNG. | - **Bonus 2.** Modificați al doilea task astfel încât să salvați harta de simboluri ca o imagine PNG. |