Projekter og øvelser
Byg projekter, der passer til hvert trin i Python-læringsstien.
Basalt: terminalberegner
Krav:
- Læs to tal og en operator.
- Understøt
+,-,*og/. - Håndtér ugyldige tal og division med nul.
- Gentag indtil brugeren skriver
quit.
Begynder: task manager
Gem tasks som dictionaries i en liste. Understøt opret, list, markér færdig og slet. Gem data som JSON, når du har lært filer.
Mellemtrin: CLI med package-struktur
Byg et program med:
pyproject.tomlog installerbar CLI-kommando.pathlib, JSON og dataclasses.- Type hints og pytest.
- Tydelige exit codes og fejlbeskeder.
Studér derefter PixelVault, som implementerer netop en installerbar CLI med encoder, decoder, formatmodul og tests.
Web: API med database
Byg et FastAPI-baseret inventory API med SQLite:
- CRUD-endpoints med validerede schemas.
- Repository og service-lag.
- Parameteriseret SQL og transactions.
- Integrationstests med en separat testdatabase.
- Health endpoint og struktureret logging.
Automation: backup-værktøj
Lav et CLI-program, der kopierer ændrede filer til en backupmappe. Tilføj --dry-run, checksums, configfil, sikre paths og en rapport. Kør det derefter via operativsystemets scheduler.
Avanceret: asynkron statusmonitor
Hent status fra flere HTTP-endpoints samtidigt. Tilføj timeout, retry med backoff, struktureret logging og en concurrency-grænse.
Test uden rigtige netværkskald ved at injicere en fake HTTP-client.
Svært: job-system
Byg et system med kø, workers og persistent tilstand:
- Jobs har ID, status, forsøg og idempotency key.
- Workers må kunne crashe uden at miste jobs.
- Retry må ikke udføre en betaling eller mutation to gange.
- CPU-jobs kører i processer; IO-jobs kan være async.
- Metrics viser kølængde, fejlrate og varighed.
Definition of done
Et projekt er ikke færdigt, når det bare virker én gang. Det er færdigt, når:
- Setup står i en README.
- Inputs valideres.
- Fejl giver forståelige beskeder.
- Vigtig logik har tests.
- Secrets er ikke committed.
- En ny bruger kan starte projektet fra en ren mappe.