This shows you the differences between two versions of the page.
gp:laboratoare:01 [2025/02/05 10:05] maria_anca.balutoiu [Setup Python] |
gp:laboratoare:01 [2025/02/05 12:59] (current) maria_anca.balutoiu [Tasks] |
||
---|---|---|---|
Line 1: | Line 1: | ||
===== Laboratorul 01. Introducere ===== | ===== Laboratorul 01. Introducere ===== | ||
==== Setup Python ==== | ==== Setup Python ==== | ||
- | <hidden> | + | Python este un limbaj de programare de nivel înalt, interpretat și versatil, ideal pentru o gamă largă de aplicații, oferind atât simplitate, cât și eficiență în dezvoltarea software. Unul dintre principalele avantaje ale Python este comunitatea sa, care contribuie la o colecție extinsă de biblioteci și framework-uri. Aceste resurse facilitează dezvoltarea rapidă a aplicațiilor în diverse domenii, precum: |
- | Python este un limbaj de programare de nivel înalt, interpretat și versatil, cunoscut pentru sintaxa sa clară și concisă, ceea ce îl face accesibil atât pentru începători, cât și pentru programatori experimentați. Dezvoltat de Guido van Rossum și lansat în 1991, Python a evoluat constant, devenind unul dintre cele mai populare limbaje de programare din lume. | + | * **Dezvoltare web.** Framework-uri precum Django și Flask permit crearea de aplicații web robuste și scalabile. |
+ | * **Data analytics și data science.** Biblioteci precum NumPy, pandas și Matplotlib sunt esențiale pentru manipularea și vizualizarea datelor. | ||
+ | * **Inteligență artificială și învățare automată.** Biblioteci precum TensorFlow și scikit-learn facilitează dezvoltarea de modele predictive și algoritmi de învățare automată. | ||
+ | * **Automatizare și scripting.** Python este adesea utilizat pentru automatizarea sarcinilor repetitive. | ||
- | Unul dintre principalele avantaje ale Python este comunitatea sa vastă și activă, care contribuie la o colecție extinsă de biblioteci și cadre (frameworks). Aceste resurse facilitează dezvoltarea rapidă a aplicațiilor în diverse domenii, precum: | + | Python poate fi descărcat și instalat de [[https://www.python.org/|aici]]. |
- | Dezvoltare web: Framework-uri precum Django și Flask permit crearea de aplicații web robuste și scalabile. | + | <note important>Odată instalat Python, pentru ușurință sugestia este să adăugați executabilul în path în variabile de mediu.</note> |
- | Analiza datelor și știința datelor: Biblioteci precum NumPy, pandas și Matplotlib sunt esențiale pentru manipularea și vizualizarea datelor. | + | ==== Mediu Virtual ==== |
+ | Î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. | ||
- | Inteligență artificială și învățare automată: Biblioteci precum TensorFlow și scikit-learn facilitează dezvoltarea de modele predictive și algoritmi de învățare automată. | + | Pentru a crea un mediu virtual pentru proiectul curent, într-un terminal se merge în folderul proiectului și se rulează comanda: |
- | Automatizare și scripting: Python este adesea utilizat pentru automatizarea sarcinilor repetitive și crearea de scripturi eficiente. | + | <code> |
+ | python3 -m venv virtual_environment_name | ||
+ | </code> | ||
- | 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. | + | 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> | ||
- | În concluzie, Python este un limbaj de programare puternic și flexibil, ideal pentru o gamă largă de aplicații, de la proiecte mici la sisteme complexe, oferind atât simplitate, cât și eficiență în dezvoltarea software. | + | Pentru a dezactiva mediul virtual și a reveni la mediul global, se rulează comanda: |
- | </hidden> | + | <code> |
+ | deactivate | ||
+ | </code> | ||
+ | |||
+ | Avantajele utilizării **venv**: | ||
+ | * **Izolare.** Fiecare mediu virtual are propriul set de pachete, prevenind conflictele între proiecte | ||
+ | * **Gestionarea dependențelor.** Permite instalarea versiunilor specifice ale pachetelor necesare pentru un proiect, fără a interfera cu alte proiecte | ||
+ | * **Portabilitate.** Facilitează replicarea mediului de dezvoltare pe alte sisteme, asigurând consistența între diferite medii de lucru. | ||
==== Biblioteci Utile ==== | ==== Biblioteci Utile ==== | ||
+ | === Pygame === | ||
+ | Pygame este o bibliotecă open source pentru Python, concepută pentru dezvoltarea de jocuri video și aplicații multimedia. | ||
+ | |||
+ | 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. | ||
+ | |||
+ | Pentru a folosit Pygame, este necesar să importăm biblioteca în proiect: | ||
+ | |||
+ | <code> | ||
+ | python3 -m pip install pygame | ||
+ | </code> | ||
+ | |||
+ | <code> | ||
+ | import pygame | ||
+ | |||
+ | # Initialize Pygame | ||
+ | pygame.init() | ||
+ | |||
+ | # Set window properties | ||
+ | width, height = 800, 600 | ||
+ | screen = pygame.display.set_mode((width, height)) | ||
+ | pygame.display.set_caption('Pygame Example') | ||
+ | |||
+ | # Set the drawing colors | ||
+ | white = (255, 255, 255) | ||
+ | red = (255, 0, 0) | ||
+ | |||
+ | # Set the coordinates and the dimensions of the square | ||
+ | x, y = 100, 100 # Upper-left corner | ||
+ | length = 50 # Length of the square | ||
+ | |||
+ | running = True | ||
+ | while running: | ||
+ | for event in pygame.event.get(): | ||
+ | if event.type == pygame.QUIT: | ||
+ | running = False | ||
+ | |||
+ | # Set background color | ||
+ | screen.fill(white) | ||
+ | |||
+ | # Draw a square | ||
+ | pygame.draw.rect(screen, red, (x, y, length, length)) | ||
+ | |||
+ | # Update the screen | ||
+ | pygame.display.flip() | ||
+ | </code> | ||
+ | |||
+ | === Pillow === | ||
+ | Pillow este o bibliotecă open source pentru Python, destinată procesării și manipulării imaginilor. | ||
+ | |||
+ | 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. | ||
+ | |||
+ | Pentru a folosit Pillow, este necesar să importăm biblioteca în proiect: | ||
+ | |||
+ | <code> | ||
+ | python3 -m pip install pillow | ||
+ | </code> | ||
+ | |||
+ | <code> | ||
+ | from PIL import Image | ||
+ | |||
+ | # Open image | ||
+ | image = Image.open('image.jpg') | ||
+ | |||
+ | # Resize image | ||
+ | resized_image = image.resize((800, 600)) | ||
+ | |||
+ | # Save the resized image | ||
+ | resized_image.save('resized_image.jpg') | ||
+ | </code> | ||
==== Tasks ==== | ==== Tasks ==== | ||
+ | |||
+ | <note tip>Pentru a genera un număr random, folosiți biblioteca **random**.</note> | ||
+ | |||
- 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. |