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.
112 lines
3.6 KiB
112 lines
3.6 KiB
# 1. část funkce
|
|
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. Duležité oznáčí [!]"""
|
|
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 oznac_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 #return ukončuje def (funkci), proto můžeme napsat return false bez else
|
|
|
|
def uloz_do_souboru(poznamky,nazev_souboru):
|
|
"""Uloží poznámky do textového souboru (formát: autor|text|True/False)"""
|
|
with open(nazev_souboru,mode="w",encoding="utf-8") as f:
|
|
for pozn in poznamky:
|
|
# | = AltGR + W
|
|
radek = f"{pozn['autor']}|{pozn['text']}|{pozn['dulezita']}\n"
|
|
f.write(radek)
|
|
print(f"Zloženo {len(poznamky)} poznámek do {nazev_souboru}")
|
|
|
|
def nacti_ze_souboru(nazev_souboru):
|
|
"""Načte poznámky zer souboru a vráti je jako seznam (pole) slovníků."""
|
|
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)
|
|
print(f"načteno {len(poznamky)} poznámek")
|
|
except FileNotFoundError:
|
|
print("Soubor nenalezen, začíname s prázným seznamem.")
|
|
return poznamky
|
|
|
|
# 2. část hlavní (funkce) programu
|
|
def hlavni_menu():
|
|
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("\n---Vaše poznámky---")
|
|
zobraz_poznamky(poznamky)
|
|
|
|
elif volba == "3":
|
|
zobraz_poznamky(poznamky)
|
|
try:
|
|
cislo = int(input("Číslo poznámky k označení:"))
|
|
if oznac_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("Na shledanou")
|
|
break
|
|
|
|
else:
|
|
print("špatná volba, zkuste to znovu.")
|
|
|
|
|
|
# 3. spuštění hlavního programu
|
|
if __name__ == "__main__":
|
|
main()
|