Przejdź do treści
Wróć do kursuProgramowanie / Lekcja 8 z 8

Lekcja 8 / finał

Finał: mini-aplikacja do śledzenia postępu kursu

Składasz wcześniejsze elementy w jeden mały program: lekcje, kurs, oznaczanie ukończenia, wypisywanie listy i liczenie procentu postępu.

Sytuacja z pracy

Chcesz stworzyć prosty tracker. Kurs ma kilka lekcji. Uczeń może ukończyć jedną z nich. Program pokazuje status każdej lekcji i liczy procent postępu.

Plan programu

  1. Klasa Lesson trzyma tytuł i status ukończenia.
  2. Klasa Course trzyma tytuł kursu i listę lekcji.
  3. Kurs umie pokazać lekcje, oznaczyć jedną jako ukończoną i policzyć postęp.

Kod finałowy

class Lesson:
    def __init__(self, title):
        self.title = title
        self.completed = False

    def mark_completed(self):
        self.completed = True


class Course:
    def __init__(self, title, lessons):
        self.title = title
        self.lessons = lessons

    def show_lessons(self):
        for lesson in self.lessons:
            if lesson.completed:
                status = "ukończona"
            else:
                status = "do zrobienia"

            print(lesson.title + " - " + status)

    def mark_lesson_completed(self, title):
        for lesson in self.lessons:
            if lesson.title == title:
                lesson.mark_completed()
                return True
        return False

    def progress_percent(self):
        completed_count = 0

        for lesson in self.lessons:
            if lesson.completed:
                completed_count += 1

        return round(completed_count / len(self.lessons) * 100, 2)


lessons = [
    Lesson("Zmienne"),
    Lesson("Warunki"),
    Lesson("Listy i pętle")
]

course = Course("Python od podstaw", lessons)

course.mark_lesson_completed("Zmienne")
course.show_lessons()

print("Postęp:", course.progress_percent(), "%")

Wynik

Zmienne - ukończona
Warunki - do zrobienia
Listy i pętle - do zrobienia
Postęp: 33.33 %

Co tu połączyliśmy?

Zmienne
Tytuły kursu i lekcji.
Warunki
Decyzja, czy lekcja jest ukończona.
Listy i pętle
Przejście po wszystkich lekcjach.
Klasy
Dane i zachowanie w jednym miejscu.

Mini-zadanie

Zmień ukończoną lekcję z "Zmienne" na "Warunki". Sprawdź wynik i procent postępu.

Ćwiczenie końcowe

Dodaj metodę show_unfinished_lessons(), która wypisuje tylko lekcje do zrobienia. Użyj pętli for i warunku if not lesson.completed.

Quiz finałowy

Dlaczego Course ma listę Lesson?

Bo kurs składa się z wielu lekcji. To przykład kompozycji: jeden obiekt zawiera inne obiekty.

Co robi mark_lesson_completed?

Szuka lekcji po tytule i oznacza ją jako ukończoną.

Dlaczego progress_percent używa pętli?

Bo musi przejść po wszystkich lekcjach i policzyć ukończone.

Co dalej?

To mały program, ale ma prawdziwą strukturę. Następny krok to zapis postępu do JSON albo prosty interfejs tekstowy, w którym użytkownik wybiera lekcję do oznaczenia jako ukończoną.

Lekcja 8: Finał: mini-aplikacja do śledzenia postępu kursu | Python od podstaw | Mikołaj Mikołajczak