import re
def valider_email(email):
"""Vérifie si un email est valide."""
pattern = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
return re.match(pattern, email) is not None
def valider_numero(numero):
"""Vérifie si un numéro de téléphone est valide."""
return numero.isdigit() and 8 <= len(numero) <= 15
def valider_nom(nom):
"""Vérifie si un nom est valide."""
return re.match(r'^[a-zA-Z\s]+$', nom) is not None
def afficher_menu():
"""Affiche le menu principal."""
print("\n--- Menu ---")
print("1. Ajouter un contact")
print("2. Supprimer un contact")
print("3. Rechercher un contact")
print("4. Modifier un contact")
print("5. Afficher tous les contacts")
print("6. Quitter")
def ajouter_contact(contacts):
"""Ajoute un contact à la liste."""
nom = input("Entrez le nom : ")
if not valider_nom(nom):
print("Nom invalide. Assurez-vous qu'il contient uniquement des lettres et des espaces.")
return
numero = input("Entrez le numéro de téléphone : ")
if not valider_numero(numero):
print("Numéro invalide. Assurez-vous qu'il contient entre 8 et 15 chiffres.")
return
email = input("Entrez l'email : ")
if not valider_email(email):
print("Email invalide. Contact non ajouté.")
return
contacts[nom] = [numero, email]
print(f"Contact '{nom}' ajouté avec succès.")
def supprimer_contact(contacts):
"""Supprime un contact de la liste."""
nom = input("Entrez le nom du contact à supprimer : ")
if nom in contacts:
del contacts[nom]
print(f"Contact '{nom}' supprimé avec succès.")
else:
print(f"Aucun contact trouvé avec le nom '{nom}'.")
def rechercher_contact(contacts):
"""Recherche un contact par nom."""
nom = input("Entrez le nom du contact à rechercher : ")
if nom in contacts:
numero, email = contacts[nom]
print(f"Nom : {nom}, Numéro : {numero}, Email : {email}")
else:
print(f"Aucun contact trouvé avec le nom '{nom}'.")
def modifier_contact(contacts):
"""Modifie les informations d'un contact existant."""
nom = input("Entrez le nom du contact à modifier : ")
if nom in contacts:
print(f"Contact actuel : {contacts[nom]}")
nouveau_numero = input("Entrez le nouveau numéro (laisser vide pour conserver l'ancien) : ")
if nouveau_numero and not valider_numero(nouveau_numero):
print("Numéro invalide. Modification annulée.")
return
nouveau_email = input("Entrez le nouvel email (laisser vide pour conserver l'ancien) : ")
if nouveau_email and not valider_email(nouveau_email):
print("Email invalide. Modification annulée.")
return
contacts[nom][0] = nouveau_numero or contacts[nom][0]
contacts[nom][1] = nouveau_email or contacts[nom][1]
print(f"Contact '{nom}' modifié avec succès.")
else:
print(f"Aucun contact trouvé avec le nom '{nom}'.")
def afficher_tous_les_contacts(contacts):
"""Affiche tous les contacts."""
if contacts:
print("\n--- Liste des contacts ---")
for nom, (numero, email) in contacts.items():
print(f"Nom : {nom}, Numéro : {numero}, Email : {email}")
else:
print("Aucun contact enregistré.")
def main():
"""Point d'entrée principal du programme."""
contacts = {}
while True:
afficher_menu()
choix = input("Choisissez une option : ")
if choix == "1":
ajouter_contact(contacts)
elif choix == "2":
supprimer_contact(contacts)
elif choix == "3":
rechercher_contact(contacts)
elif choix == "4":
modifier_contact(contacts)
elif choix == "5":
afficher_tous_les_contacts(contacts)
elif choix == "6":
print("Au revoir !")
break
else:
print("Option invalide. Veuillez réessayer.")
if __name__ == "__main__":
main()