You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

113 lines
3.6 KiB

# 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()