diff --git a/27_spravce_poznamek/poznamky.txt b/27_spravce_poznamek/poznamky.txt new file mode 100644 index 0000000..b1aff21 --- /dev/null +++ b/27_spravce_poznamek/poznamky.txt @@ -0,0 +1,6 @@ +test|test|True +Jára Cimrman|Jdu na sever, Jdu na sever, Jdu na sever, Jdu na Jih|False +Aristoteles|Vím, že nic nevím|False +Ceasar|Veni, Vidi, Vici|False +Lorem|Ipsum|True + diff --git a/27_spravce_poznamek/spravce.py b/27_spravce_poznamek/spravce.py new file mode 100644 index 0000000..2fc9e2f --- /dev/null +++ b/27_spravce_poznamek/spravce.py @@ -0,0 +1,113 @@ +# 1. čast funkce programu + +def pridej_poznamku(poznamky, autor, text): + """Přidá novou poznámku (slovník) do seznamu""" + nova = { + "autor":autor, + "text":text, + "dulezita":False + } + poznamky.append(nova) + +def zobraz_poznamky(poznamky): + """Vypíše všechny poznámky. Důležité poznámky vypíše [!]""" + if len(poznamky) == 0: + print("Žádné poznámky") + return + + for i, pozn in enumerate(poznamky): + znacka = " [!]" if pozn["dulezita"] else "" + print(f'[{i+1}] {pozn["autor"]}: {(pozn["text"])}{znacka}') + +def oznacit_dulezitou(poznamky,cislo): + """Označí poznámku jako důležitou. Vrací True/False podle úspěchu""" + if 1 <= cislo <= len(poznamky): + poznamky[cislo-1]["dulezita"] = True + return True + return False + +def uloz_do_souboru(poznamky,nazev_souboru): + """Uloží poznámky do textového souboru (formát: autor|text|True/False)""" + # AltGR + W = |, AltGR + Q = \ + with open(nazev_souboru,mode="w",encoding="utf-8") as f: + for pozn in poznamky: + radek = f"{pozn['autor']}|{pozn['text']}|{pozn['dulezita']}\n" + f.write(radek) + print(f"Uloženo {len(poznamky)} poznámek do {nazev_souboru}") + +def nacti_ze_souboru(nazev_souboru): + """Načte poiznámky ze souboru a vrátí je jako seznam slovníků(dict array)""" + poznamky = [] + try: + with open(nazev_souboru,mode="r",encoding="utf-8") as f: + for radek in f: + casti = radek.strip().split("|") + if len(casti) == 3: + poznamka = { + "autor":casti[0], + "text":casti[1], + "dulezita":casti[2] == "True" + } + poznamky.append(poznamka) + except FileNotFoundError: + print("Soubor nenalezen, začínáme s prázným seznamem") + except Exception as e: + print(f"Chyba: {e}") + return poznamky + +# 2. hlavní program + +def hlavni_menu(): + """Zobrazí menu a vrátí volbu uživatele""" + print("\n----- SPRÁVCE POZNÁMEK -----") + print("1. přidat poznámku") + print("2. Zobrazit poznámky") + print("3. Označit důležitou") + print("4. Uložit do souboru") + print("5. Načíst ze souboru") + print("6. Konec") + print("=========================") + return input("Vaše Volba: ") + +def main(): + """Hlavní funkce programu.""" + nazev_souboru = "poznamky.txt" + poznamky = [] + + print("Vítejte ve Správci poznámek!") + while True: + volba = hlavni_menu() + if volba == "1": + autor = input("Autor: ") + text = input("Text poznámky: ") + pridej_poznamku(poznamky,autor,text) + print("Poznámka přidána!") + + elif volba == "2": + print(f"--Vaše poznámky--") + zobraz_poznamky(poznamky) + + elif volba == "3": + zobraz_poznamky(poznamky) + try: + cislo = int(input("Číslo poznámky k označení: ")) + if oznacit_dulezitou(poznamky, cislo): + print("Označeno jako důležité") + else: + print("Neplatné číslo") + except ValueError: + print("Zadejte prosím číslo") + + elif volba == "4": + uloz_do_souboru(poznamky,nazev_souboru) + elif volba == "5": + poznamky = nacti_ze_souboru(nazev_souboru) + elif volba == "6": + print("děkujeme za využiti programu") + break + else: + print("Neplatná volba, zkuste to znovu") + +# 3. spouštěč +if __name__ == "__main__": + main() \ No newline at end of file