✦ Srednji nivo Pythona i OOP Završni projekat Levela 2

L2 · Koncept 02 · Završni projekat: Task Manager

Tvoj Task Manager
Oživljava.

Napravi metode koje TaskManager čine korisnim, uz predvidivo ponašanje.

Cilj učenjaProširi postojeći TaskManager predvidivim metodama za pronalaženje, prikaz, završavanje i brisanje Task objekata.
01 Uči02 Radi lokalno03 Proveri razumevanje

Učenje kao gost

Učiš kao gost — sačuvaj svoj napredak!

Napravi besplatan nalog i uči uz Sloby AI mentora, proveru razumevanja i praćenje napretka.

Cela platforma je besplatna tokom 2026. Foundations ostaje zauvek besplatan.

TaskManager upravlja kolekcijom.

Task čuva podatke o jednom zadatku. TaskManager poseduje listu, zato metodi koji pretražuju, menjaju ili uklanjaju stavke pripadaju TaskManageru.

def get_task(self, task_id: str) -> Task:
    for task in self.tasks:
        if task.task_id == task_id:
            return task
    raise ValueError("Task was not found.")

Petlja ispituje svaki postojeći Task. Odgovarajući task_id vraća isti objekat iz liste. ID koji ne postoji podiže ValueError, pa svaki pozivalac dobija jedan jasan, predvidiv rezultat.

Ova lekcija koristi jednu politiku: duplirani ID-jevi se odbijaju sa ValueError, a ID koji ne postoji takođe podiže ValueError. Ponovljeni poziv complete_task() je bezbedan: zadatak jednostavno ostaje završen.

↳

Nadogradi postojeći metod: add_task() ostaje početna tačka. Pre dodavanja treba da proveri da li get_task() već može da pronađe isti ID i odbije dvosmisleni duplikat.

Izmena objekta koji je već sačuvan u listi
task = Task("task-1", "Read the plan")
manager = TaskManager()
manager.add_task(task)
task.completed = True

print(manager.tasks[0].completed)

Lista čuva referencu na Task objekat, a ne posebnu kopiju. Kada completed postane True, Task do kojeg se stiže preko manager.tasks[0] prikazuje isto promenjeno stanje.

Methods can build on each other
def complete_task(self, task_id: str) -> Task:
    task = self.get_task(task_id)
    task.completed = True
    return task

A small method can reuse get_task() instead of repeating the search loop. You will write the remaining methods yourself in the local project.

Choose predictable behavior

  1. View and findLet list_tasks() return the task list and get_task(task_id) return one matching Task.
  2. Complete safelyLet complete_task() set completed to True. Calling it again should not duplicate or break the task.
  3. Delete deliberatelyLet delete_task() remove the matching Task after it is found. A later lookup for that ID should raise ValueError.

Common task-management mistakes

  • Allowing duplicate task IDsTwo different tasks with one ID make get_task() ambiguous. Reject the duplicate before changing the list.
  • Returning a hidden failureDo not silently return an unrelated Task for a missing ID. Use the same clear ValueError policy in each operation.

Učini svoj Task Manager korisnim

Radi ovo u VS Code-u

Nastavi u raspakovanom folderu task_manager_starter iz koncepta 28. U dijagramima lekcije projekat se zove task_manager, ali treba da nastaviš da radiš u istom starter folderu. Ne pravi novi projekat i ne preuzimaj novi ZIP.

Nastavi postojeći projekat
task_manager/
├── main.py
├── models/task.py
└── services/task_manager.py

Zadrži Task i postojeći metod add_task(). Proširuj TaskManager korak po korak, zatim pokaži ponašanje u main.py.Zadrži Task i postojeći metod add_task(). Proširi TaskManager korak po korak, zatim pokaži ponašanje u main.py.

Proširi postojeći projekat

  1. Pregledaj osnovuOtvori services/task_manager.py i pročitaj add_task() pre dodavanja novog metoda.
  2. Implementiraj jedan metod po jedanDodaj list_tasks(), get_task(), complete_task() i delete_task(). Odluči gde svaka operacija treba da koristi get_task().
  3. Pokaži ponašanjeAžuriraj main.py, pokreni ga i uporedi rezultate sa scenarijima ispod.
    python3 main.py
    # or: python main.py
↳

Ručne provere: two different tasks → find one → complete it twice → delete it Isprobaj i ID koji ne postoji i duplirani ID. Oba slučaja treba da prate izabranu ValueError politiku.

Pre nego što zatražiš pomoć od Slobyja

  • Prati ID zadatkaIspiši vrednosti task_id dok pratiš listu. Proveri pravopis pre menjanja petlje.

Šta će ovaj program ispisati?

Prati isti Task objekat kroz listu menadžera.

task = Task("task-1", "Read the plan")
manager = TaskManager()
manager.add_task(task)
task.completed = True

print(manager.tasks[0].completed)
Izaberi izlaz

Izgrađuj samopouzdanje samostalnim radom

Prikaži samo nezavršene zadatke

Dodaj metod pending_tasks() koji vraća zadatke čije je stanje completed False. Razmisli o filtriranju postojeće liste pre pisanja koda.

Vaš ciljPokaži dva različita zadatka, završi jedan i prikaži da pending_tasks() vraća samo nezavršeni Task. Neka ponašanje za duplirani i nepostojeći ID ostane predvidivo.
task_manager/
├── main.py
└── services/task_manager.py

Radi u svom lokalnom VS Code folderu

Nagoveštaji korak po korak
  • Počni praznom listom rezultata.
  • Proveri task.completed za svaki zadatak u self.tasks.
  • Dodaj samo zadatke čija je vrednost completed False.

Pitaj Slobyja jedno vodeće pitanje o filtriranju ili odgovornostima metoda. Nemoj tražiti da napiše ceo završeni TaskManager umesto tebe.

Sloby, maskota Python AI Tutora

Tvoj mentor za učenje

Prijavite se da pitate Slobyja

Napravite besplatan nalog ili se prijavite za AI smernice tokom učenja.

Prijavite se da proverite svoje razumevanje

Napravite besplatan nalog ili se prijavite da biste dobili AI povratnu informaciju i sačuvali napredak u učenju.

Python AI Tutor · Uči razumevanjem, a ne samo pokretanjem koda.