Procvičování: Kontakty
Program bude podporovat následující funkce:
- Přidání nového kontaktu
- Uživatel zadá jméno, telefonní číslo a e-mail.
- Nový kontakt se uloží do souboru ve formátu:
Jméno;Telefon;Email
- Výpis všech kontaktů
- Program načte a zobrazí všechny kontakty uložené v souboru.
- Vyhledání kontaktu podle jména
- Uživatel zadá jméno a program zobrazí odpovídající kontakt (pokud existuje).
- Smazání kontaktu podle jména
- Uživatel zadá jméno a program odstraní daný kontakt ze souboru.
Program poběží v nekonečném cyklu a umožní uživateli provést operace podle vstupu: "pridat", "vypis", "hledat", "smazat"
.
Řešení
Zobrazit řešení
def pridat_kontakt():
jmeno = input("Zadejte jméno: ")
telefon = input("Zadejte telefonní číslo: ")
email = input("Zadejte e-mail: ")
with open("kontakty.txt", "a", encoding="utf-8") as soubor:
soubor.write(f"{jmeno};{telefon};{email}\n")
print("Kontakt byl úspěšně přidán.\n")
def vypis_kontakty():
if not os.path.exists("kontakty.txt"):
print("Žádné kontakty zatím nejsou uloženy.\n")
return
with open("kontakty.txt", "r", encoding="utf-8") as soubor:
kontakty = soubor.readlines()
if not kontakty:
print("Žádné kontakty zatím nejsou uloženy.\n")
return
print("Seznam kontaktů:")
for kontakt in kontakty:
print(kontakt.strip())
print()
def hledat_kontakt():
jmeno_hledane = input("Zadejte jméno kontaktu k vyhledání: ")
if not os.path.exists("kontakty.txt"):
print("Soubor s kontakty neexistuje.\n")
return
with open("kontakty.txt", "r", encoding="utf-8") as soubor:
kontakty = soubor.readlines()
nalezeno = False
for kontakt in kontakty:
jmeno, telefon, email = kontakt.strip().split(";")
if jmeno.lower() == jmeno_hledane.lower():
print(f"Nalezen kontakt: {jmeno}, {telefon}, {email}\n")
nalezeno = True
break
if not nalezeno:
print("Kontakt nebyl nalezen.\n")
def smazat_kontakt():
jmeno_smazat = input("Zadejte jméno kontaktu k odstranění: ")
if not os.path.exists("kontakty.txt"):
print("Soubor s kontakty neexistuje.\n")
return
with open("kontakty.txt", "r", encoding="utf-8") as soubor:
kontakty = soubor.readlines()
nove_kontakty = [kontakt for kontakt in kontakty if not kontakt.lower().startswith(jmeno_smazat.lower() + ";")]
if len(nove_kontakty) == len(kontakty):
print("Kontakt nebyl nalezen.\n")
return
with open("kontakty.txt", "w", encoding="utf-8") as soubor:
soubor.writelines(nove_kontakty)
print("Kontakt byl úspěšně odstraněn.\n")
def hlavni():
while True:
prikaz = input("Zadejte akci (pridat, vypis, hledat, smazat, konec): ").strip().lower()
if prikaz == "pridat":
pridat_kontakt()
elif prikaz == "vypis":
vypis_kontakty()
elif prikaz == "hledat":
hledat_kontakt()
elif prikaz == "smazat":
smazat_kontakt()
elif prikaz == "konec":
print("Ukončuji program.")
break
else:
print("Neznámý příkaz, zkuste to znovu.\n")