MrFaws Docs
Lær Python

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.toml og 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.

On this page