Laboratorium Python – Zadania praktyczne

Poniżej znajduje się 10 zadań laboratoryjnych z programowania w Pythonie. Każde zadanie jest zaprojektowane tak, aby zajmowało około 30-45 minut wykonania. Zadania obejmują tematy poznane na wykładzie, od podstaw tworzenia skryptów i funkcji, przez pracę z plikami i danymi, aż po zaawansowane przetwarzanie tekstu, walidację i automatyzację zadań.

Zadanie 1: Kalkulator BMI z klasyfikacją

Cel: Napisz program, który oblicza BMI (Body Mass Index) i określa kategorię wagi użytkownika na podstawie podanej wagi i wzrostu.
Scenariusz: Pracujesz jako programista w firmie zajmującej się aplikacjami zdrowotnymi. Twoim zadaniem jest stworzenie modułu kalkulatora BMI, który przyjmie od użytkownika wagę (w kg) i wzrost (w cm), obliczy BMI według wzoru: BMI = waga / (wzrost/100)², a następnie przypisze kategorię: niedowaga (<18.5), waga prawidłowa (18.5-24.9), nadwaga (25-29.9), otyłość (≥30). Program powinien obsługiwać błędne dane wejściowe i wyświetlać czytelny raport z wynikami.
Wskazówki do wykonania:

Zadanie 2: Generator haseł losowych

Cel: Stwórz program generujący bezpieczne hasła losowe o określonej długości i złożoności.
Scenariusz: Twoja firma IT potrzebuje narzędzia do generowania bezpiecznych haseł dla nowych pracowników. Napisz program, który generuje losowe hasła o określonej długości (domyślnie 12 znaków), zawierające: małe litery, wielkie litery, cyfry i znaki specjalne. Użytkownik powinien mieć możliwość podania długości hasła jako argument wiersza poleceń. Program powinien wyświetlić wygenerowane hasło oraz informację o jego sile (ilość znaków każdego typu).
Wskazówki do wykonania:

Zadanie 3: Analizator plików tekstowych

Cel: Napisz program analizujący plik tekstowy i generujący raport ze statystykami.
Scenariusz: Pracujesz jako administrator systemów w firmie. Twoim zadaniem jest stworzenie narzędzia do analizy logów tekstowych. Napisz program, który przyjmuje nazwę pliku tekstowego jako argument, odczytuje jego zawartość i generuje raport zawierający: liczbę linii, liczbę słów, liczbę znaków, najczęściej występujące słowa (top 10), najdłuższą linię. Program powinien obsługiwać błędy (plik nie istnieje, pusty plik) i używać modułu collections.Counter do zliczania słów.
Wskazówki do wykonania:

Zadanie 4: Walidator adresów e-mail

Cel: Stwórz program walidujący adresy e-mail i wykonujący operacje na liście e-maili.
Scenariusz: Pracujesz w dziale IT odpowiedzialnym za bazę użytkowników. Twoim zadaniem jest stworzenie narzędzia do walidacji i zarządzania listą adresów e-mail pobraną z pliku. Program powinien: walidować każdy e-mail używając wyrażeń regularnych, oddzielić poprawne od niepoprawnych, usunąć duplikaty, zapisać wyniki do plików wyjściowych (poprawne.txt, niepoprawne.txt). Plik wejściowy zawiera jeden e-mail w linii.
Wskazówki do wykonania:

Zadanie 5: Menedżer zadań (To-Do List)

Cel: Stwórz prosty program do zarządzania listą zadań do wykonania z zapisem do pliku JSON.
Scenariusz: Chcesz stworzyć własny program do zarządzania zadaniami. Napisz program, który: dodaje nowe zadania, wyświetla listę zadań, oznacza zadanie jako wykonane, usuwa zadania. Dane mają być przechowywane w pliku JSON. Każde zadanie ma: tytuł, opis (opcjonalnie), status (do_zrobienia/wykonane), datę utworzenia. Program ma prosty interfejs tekstowy (menu) i obsługuje argumenty wiersza poleceń lub input().
Wskazówki do wykonania:

Zadanie 6: Konwerter jednostek temperatury

Cel: Napisz program konwertujący temperaturę między różnymi jednostkami.
Scenariusz: Twoja firma produkuje urządzenia pomiarowe eksportowane do różnych krajów. Napisz program, który konwertuje temperaturę między jednostkami: Celsiusz (°C), Fahrenheit (°F), Kelvin (K). Program powinien obsługiwać dane wejściowe w formacie "wartość jednostka" (np. "100 C", "212 F") i wyświetlać wyniki we wszystkich jednostkach. Dodaj walidację czy wartość jest możliwa fizycznie (powyżej zera bezwzględnego). Obsłuż błędne dane wejściowe.
Wskazówki do wykonania:

Zadanie 7: Przeszukiwacz plików w katalogu

Cel: Napisz program rekursywnie przeszukujący katalog w poszukiwaniu plików według wzorca.
Scenariusz: Pracujesz jako administrator i musisz znaleźć wszystkie pliki określonego typu w strukturze katalogów. Napisz program, który przyjmuje jako argumenty: ścieżkę do katalogu głównego, wzorzec pliku (np. "*.py", "*.txt", "*.log"), opcjonalnie maksymalną głębokość przeszukiwania. Program powinien rekursywnie przejść przez wszystkie podkatalogi i znaleźć pasujące pliki. Wyświetl pełne ścieżki znalezionych plików i podsumowanie.
Wskazówki do wykonania:

Zadanie 8: Parser logów systemowych

Cel: Napisz program analizujący pliki logów i wykrywający niepokojące zdarzenia.
Scenariusz: Twoim zadaniem jest stworzenie narzędzia do analizy logów bezpieczeństwa. Program powinien: odczytać plik logów, wyszukać słowa kluczowe (ERROR, WARNING, CRITICAL, FAILED), zliczyć ich wystąpienia, wyświetlić linię z kontekstem (3 linie przed i po). Program powinien przyjmować nazwę pliku jako argument i opcjonalnie poziom logowania do filtrowania. Na koniec wygeneruj raport podsumowujący.
Wskazówki do wykonania:

Zadanie 9: Gra w zgadywanie liczby

Cel: Stwórz grę w zgadywanie losowej liczby z wykorzystaniem różnych poziomów trudności.
Scenariusz: Chcesz stworzyć prostą grę tekstową do nauki Pythona. Napisz program, który: losuje liczbę z określonego zakresu (zależnie od poziomu), gracz zgaduje liczbę, program podpowiada "za dużo" / "za mało", liczy próby, zapisuje najlepszy wynik do pliku. Poziomy trudności: łatwy (1-50), średni (1-100), trudny (1-500). Program ma menu wyboru poziomu i opcję podglądu statystyk.
Wskazówki do wykonania:

Zadanie 10: Automatyczny backup plików

Cel: Napisz program tworzący backup wybranych plików z datą w nazwie.
Scenariusz: Twoim zadaniem jest stworzenie narzędzia do automatycznego backupu ważnych plików. Program powinien: przyjmować listę plików/katalogów do backupu, tworzyć archiwum .zip z datą w nazwie (np. backup_2024-01-15.zip), opcjonalnie usuwać backupy starsze niż N dni. Użyj modułu shutil lub zipfile. Program ma sprawdzać czy pliki istnieją i wyświetlać postęp.
Wskazówki do wykonania:

Przykładowe rozwiązania

Skrypty Python