PaliSkill
Python intermédiaire

Leçon 10 / 10 — Chapitre 9: Mise en pratique : carnet de contacts

Cas pratique : un mini-carnet de contacts complet

Cette dernière leçon assemble les fonctions du chapitre en un petit programme cohérent, du chargement à l'export.

import csv
import re

def telephone_valide(numero):
    return re.search(r"^[0-9]{10}$", numero) is not None

def ajouter_contact(carnet, nom, telephone):
    nom = nom.strip()
    if nom == "":
        raise ValueError("Le nom ne peut pas etre vide")
    if not telephone_valide(telephone):
        raise ValueError("Numero de telephone invalide")
    carnet.append({"nom": nom, "telephones": {"mobile": telephone}})
    return carnet

def rechercher_contact(carnet, nom):
    for contact in carnet:
        if contact["nom"].lower() == nom.lower():
            return contact
    return None

carnet = []
ajouter_contact(carnet, "Amina", "0102030405")

try:
    ajouter_contact(carnet, "Boubacar", "0607")
except ValueError as e:
    print("Erreur :", e)

carnet_trie = sorted(carnet, key=lambda c: c["nom"].lower())
for contact in carnet_trie:
    print(contact["nom"], ":", contact["telephones"]["mobile"])

Ce que fait chaque partie :

  • ajouter_contact combine désormais deux validations : un nom non vide (vu dans ce chapitre) et un numéro conforme au motif regex telephone_valide (vu dans ce chapitre) — un ValueError est levé si l'une des deux échoue.
  • Le second appel, avec un numéro trop court, déclenche l'erreur Numero de telephone invalide, interceptée par try/except sans arrêter le programme.
  • carnet_trie réutilise le tri par nom (vu dans ce chapitre) pour un affichage final ordonné.

Ce programme n'affiche donc que Erreur : Numero de telephone invalide, puis Amina : 0102030405 — Boubacar n'a jamais été ajouté au carnet, à cause du numéro invalide.

À vous de jouer : ajoutez un second contact valide au carnet, puis affichez le carnet trié complet avec les deux contacts.

🔒

Continuez ce module

Débloquez les leçons restantes ainsi que la certification finale.

2 500 XOF / 3,81 € / 4,15 $

Débloquez les 85 leçons restantes de ce module

Votre paiement est vérifié avant l'activation de l'accès