Zadanie: Python funkcje + moduły

python zadanie dla średniozaawansowanych

Ten wpis powstaje w ramach wyzwania Summer Of Code jako podsumowanie 3 tygodnia wyzwania! W tym tygodniu, co udało nam się osiągnąć to przejście od zera do pisania własnych skryptów w Pythonie z wykorzystaniem fundamentalnych koncepcji programowania.

Przypominam, że na blogu znajdziecie również darmowy kurs online Python od podstaw.

Zadanie łączące podstawy programowania w Pythonie takie jak:

  • typy i zmienne
  • instrukcje warunkowe
  • pętle
  • funkcje
  • moduły
  • zapis do pliku

…chociaż myślę, że to zadanie również dla średniozaawansowanych w pythonie, które można dalej rozbudowywać wg. własnego poziomu (np. dodać obsługę wyjątków, OOP itd).

Czas na klasyk, czyli TODO listę w Pythonie na zakończenie tygodnia nauki

PROJEKT KOŃCOWY

Zadanie: Notatnik zadań

Twoim zadaniem jest stworzenie prostego notatnika zadań w Pythonie (to-do list), który będzie umożliwiał użytkownikowi dodawanie nowych zadań, oznaczanie ich jako wykonane i zapisywanie ich do pliku.

 

Wymagane funkcje notatnika zadań:

  • Dodawanie nowego zadania: Użytkownik może wprowadzić opis nowego zadania, a program powinien zapisać je w liście zadań.
  • Wyświetlanie listy zadań: Użytkownik może wyświetlić listę wszystkich zadań w terminalu.
  • Oznaczanie zadania jako wykonane: Użytkownik może oznaczyć zadanie jako wykonane, co wpłynie na jego status w liście zadań (np. zmienna typu bool – true/false).
  • Zapisywanie do pliku: Po zakończeniu pracy z notatnikiem, lista zadań powinna zostać zapisana do pliku tekstowego (albo csv), tak, aby można było ją ponownie odczytać przy kolejnym uruchomieniu programu.
  • Odczyt z pliku: (opcjonalnie) Po ponownym uruchomieniu możliwość odczytania listy zadań z pliku tekstowego.

Biblioteki, które można wykorzystać:

  • datetime: Do dodawania daty i czasu wykonania zadania, albo „do kiedy” (wg. uznania)
  • (opcjonalnie) os: Do sprawdznia czy dany plik istnieje zanim spróbujemy go otworzyć

Wskazówki:

  1. Rozpocznij od stworzenia prostego menu dla użytkownika, które umożliwi dodawanie, wyświetlanie i oznaczanie zadań (te operacje będą funkcjami).
  2. Wykorzystaj pętlę while, aby umożliwić użytkownikowi wykonanie wielu operacji przed zamknięciem notatnika.
  3. Zadbaj o strukturę danych np. przechowuj listę zadań w formie słownika, gdzie kluczami będą numery indeksów, a wartościami będą opisy zadań.
  4. Po zakończeniu pracy z notatnikiem, zapisz listę zadań do pliku tekstowego za pomocą biblioteki os.

Pseudokod
Jak może wyglądać kolejność instrukcji w tym zadaniu?

Utwórz strukturę dla zadań np. słownik

Funkcja display_menu:
    Wyświetl opcje menu

Funkcja add_task:
    Weź opis zadania od użytkownika
    Weź aktualną datę i czas
    Dodaj zadanie do słownika 'tasks' z datą i statusem do zrobienia

Funkcja display_tasks:
    Dla każdego zadania w 'tasks', wyświetl indeks, opis, datę i status

Funkcja mark_task_done:
    Weź indeks zadania od użytkownika
    Zmień status zadania na 'wykonane'

Funkcja save_tasks_to_file:
    Otwórz plik do zapisu
    Dla każdego zadania w 'tasks', zapisz indeks, opis, datę i status do pliku
    Zamknij plik

Główna pętla programu:
    Wyświetl menu
    Weź wybór od użytkownika
    Jeśli użytkownik wybrał 'dodaj zadanie', wywołaj funkcję add_task
    Jeśli użytkownik wybrał 'wyświetl zadania', wywołaj funkcję display_tasks
    Jeśli użytkownik wybrał 'oznacz zadanie jako wykonane', wywołaj funkcję mark_task_done
    Jeśli użytkownik wybrał 'zapisz zadania do pliku', wywołaj funkcję save_tasks_to_file
    Jeśli użytkownik wybrał 'wyjdź', zakończ pętlę

Pseudokod w tym wypadku to koncepcja kodu, która może pomóc w pracy nad projektem. Pamiętaj to tylko sugestia, istnieje więcej niz jedno dobre rozwiązanie (np. brakuje jeszcze odczytu z pliku)