Proiecte practice în Python
Această lecție te provoacă să aplici conceptele învățate prin șase proiecte interactive. De la jocuri simple în consolă până la aplicații web și automatizare, fiecare proiect îți dezvoltă abilitățile într-un mod practic și creativ.
Proiectele incluse
- Joc de ghicit numere
- Aplicație bancară simplă
- Mini-chat cu interfață CLI
- Tic-Tac-Toe în consolă
- Automatizare: web scraping cu requests + BeautifulSoup
- Aplicație web simplă cu Flask
Fiecare proiect vine cu explicații, cod complet și sugestii de extindere. Poți să le personalizezi, să le combini sau să le transformi în aplicații mai complexe.
Joc de ghicit numere - Proiect CLI în Python
Acest joc simplu în linia de comandă permite utilizatorului să ghicească un număr generat aleator de calculator. Este ideal pentru exersarea buclelor, condițiilor și gestionării inputului.
Codul jocului
import random
numar_secret = random.randint(1, 100)
incercari = 0
print("Ghicește numărul între 1 și 100!")
while True:
try:
ghicit = int(input("Introdu un număr: "))
incercari += 1
if ghicit < numar_secret:
print("📉 Prea mic.")
elif ghicit > numar_secret:
print("📈 Prea mare.")
else:
print(f"🎉 Felicitări! Ai ghicit în {incercari} încercări.")
break
except ValueError:
print("⚠️ Introdu un număr valid.")
Ce exersezi
- Utilizarea modulului
random - Bucle
whileși condițiiif-elif-else - Tratarea excepțiilor cu
try-except - Interacțiune în linia de comandă
Extensii posibile
- Permite alegerea intervalului (ex: 1-500)
- Salvează scorul într-un fișier
- Adaugă un sistem de „high score”
- Transformă jocul într-o interfață grafică cu
tkinter
Aplicație bancară simplă - Proiect CLI în Python
Această aplicație simulează un cont bancar în linia de comandă. Utilizatorul poate verifica soldul, depune bani și retrage fonduri. Este ideală pentru exersarea funcțiilor, a structurilor condiționale și a buclelor.
Codul aplicației
sold = 1000
def afiseaza_meniu():
print("\n💳 Meniu Bancar")
print("1. Verifică soldul")
print("2. Depune bani")
print("3. Retrage bani")
print("4. Ieșire")
while True:
afiseaza_meniu()
optiune = input("Alege o opțiune: ")
if optiune == "1":
print(f"💰 Soldul curent este: {sold} RON")
elif optiune == "2":
suma = float(input("Introdu suma de depus: "))
sold += suma
print(f"✅ Ai depus {suma} RON.")
elif optiune == "3":
suma = float(input("Introdu suma de retras: "))
if suma <= sold:
sold -= suma
print(f"✅ Ai retras {suma} RON.")
else:
print("❌ Fonduri insuficiente.")
elif optiune == "4":
print("👋 La revedere!")
break
else:
print("⚠️ Opțiune invalidă.")
Ce exersezi
- Funcții simple
- Bucle
whileși condiții - Gestionarea inputului numeric
Extensii posibile
- Salvează soldul într-un fișier
- Adaugă autentificare cu parolă
- Permite transferuri între conturi
Mini-chat cu interfață CLI - Proiect interactiv în Python
Acest proiect simulează o conversație între doi utilizatori în linia de comandă. Mesajele sunt salvate într-un fișier text, iar fiecare utilizator poate citi și trimite mesaje. Este ideal pentru exersarea lucrului cu fișiere și interacțiunea în buclă.
Codul aplicației
def trimite_mesaj(nume):
mesaj = input(f"{nume} spune: ")
with open("chat.txt", "a") as f:
f.write(f"{nume}: {mesaj}\n")
def afiseaza_chat():
print("\n📜 Istoric chat:")
try:
with open("chat.txt", "r") as f:
print(f.read())
except FileNotFoundError:
print("💬 Chatul este gol.")
print("💬 Mini-chat CLI - scrie 'exit' pentru a ieși.")
while True:
afiseaza_chat()
utilizator = input("Cine scrie (User1/User2)? ")
if utilizator.lower() == "exit":
break
trimite_mesaj(utilizator)
Ce exersezi
- Scriere și citire din fișiere text
- Funcții și parametri
- Buclă interactivă cu input
Extensii posibile
- Adaugă marcaj temporal la fiecare mesaj
- Permite ștergerea istoricului
- Transformă aplicația într-un chat web cu Flask
Tic-Tac-Toe în consolă - Joc interactiv în Python
Acest proiect implementează jocul clasic „X și 0” în linia de comandă. Doi jucători alternează mutările pe o tablă 3x3, iar programul verifică automat câștigătorul sau remiza.
Codul jocului
tabla = [" "]*9
def afiseaza_tabla():
print(f"""
{tabla[0]} | {tabla[1]} | {tabla[2]}
---+---+---
{tabla[3]} | {tabla[4]} | {tabla[5]}
---+---+---
{tabla[6]} | {tabla[7]} | {tabla[8]}
""")
def verifica_castigator(simbol):
combinatii = [
[0,1,2], [3,4,5], [6,7,8], # linii
[0,3,6], [1,4,7], [2,5,8], # coloane
[0,4,8], [2,4,6] # diagonale
]
return any(all(tabla[i] == simbol for i in c) for c in combinatii)
jucator = "X"
while True:
afiseaza_tabla()
try:
pozitie = int(input(f"Jucător {jucator}, alege poziția (0-8): "))
if tabla[pozitie] == " ":
tabla[pozitie] = jucator
if verifica_castigator(jucator):
afiseaza_tabla()
print(f"🏆 Jucătorul {jucator} a câștigat!")
break
elif " " not in tabla:
afiseaza_tabla()
print("🤝 Remiză!")
break
jucator = "O" if jucator == "X" else "X"
else:
print("⚠️ Poziție ocupată.")
except (ValueError, IndexError):
print("⚠️ Introdu un număr valid între 0 și 8.")
Ce exersezi
- Liste și indexare
- Funcții și verificări logice
- Interacțiune în buclă
Extensii posibile
- Adaugă scoruri și runde multiple
- Permite joc contra calculatorului
- Transformă jocul într-o interfață grafică cu
tkinter
Automatizare - Web scraping cu requests + BeautifulSoup
Acest proiect demonstrează cum poți extrage date dintr-o pagină web folosind bibliotecile
requests și BeautifulSoup. Este ideal pentru automatizarea colectării de informații
online.
Codul aplicației
import requests
from bs4 import BeautifulSoup
url = "https://quotes.toscrape.com"
r = requests.get(url)
soup = BeautifulSoup(r.text, "html.parser")
citatii = soup.find_all("span", class_="text")
print("📜 Citate extrase:")
for c in citatii:
print(c.text)
Ce exersezi
- Trimiterea de cereri HTTP cu
requests - Parcurgerea structurii HTML cu
BeautifulSoup - Extracția de date din elemente HTML
Extensii posibile
- Salvează citatele într-un fișier text sau CSV
- Extrage autorii și temele citatelor
- Creează un program care colectează date din mai multe pagini
Aplicație web simplă cu Flask - Proiect Python Web
Acest proiect construiește o aplicație web de bază folosind framework-ul Flask. Este ideal pentru
începerea dezvoltării web în Python și înțelegerea rutelor, șabloanelor și serverului local.
Codul aplicației
from flask import Flask
app = Flask(__name__)
@app.route("/")
def acasa():
return "👋 Salut, Ioan! Bine ai venit în aplicația ta Flask."
@app.route("/despre")
def despre():
return "🌐 Aceasta este o aplicație web simplă creată cu Flask."
if __name__ == "__main__":
app.run(debug=True)
Ce exersezi
- Crearea unui server web local
- Definirea de rute (
@app.route) - Returnarea de conținut HTML sau text
Extensii posibile
- Adaugă formulare și procesare de date
- Integrează șabloane HTML cu
Jinja2 - Transformă aplicația într-un blog sau panou de control
