📧 Extraction Nom et Prénom depuis Email

Exercice d'algorithme - Traitement de chaînes de caractères

📝 Exercice : Extraction depuis Email

Objectif : Écrire un algorithme qui permet de saisir une adresse e-mail sous la forme nom.prénom@serveur.tn et d'afficher :
  • Votre nom est [nom]
  • Votre prénom est [prénom]
Exemple :

Adresse mail : mesfar.sami@gmail.com

Résultat attendu :

  • Votre nom est mesfar
  • Votre prénom est sami
📌 Format attendu :
  • Format général : nom.prénom@domaine.ext
  • Le nom et prénom sont séparés par un point
  • Le prénom et le domaine sont séparés par @
  • Exemples valides :
    • dupont.jean@gmail.com
    • martin.sophie@yahoo.fr
    • durand.pierre@outlook.com

✅ Solution détaillée

Méthode d'extraction améliorée :
  1. Saisir l'adresse email complète
  2. Rechercher la position du point "." dans la chaîne
  3. Rechercher la position de l'arobase "@" dans la chaîne
  4. Vérifier la validité du format
  5. Extraire le nom (caractères avant le point)
  6. Extraire le prénom (caractères entre point et arobase)
  7. Afficher les résultats obtenus
📋 Tableau des variables (TDO) :
Nom Variable Type Description
mail Chaîne Adresse email saisie
pos_point Entier Position du point "."
pos_arobase Entier Position de l'arobase "@"
Nom Chaîne Nom extrait
Prenom Chaîne Prénom extrait
📊 Exemple d'exécution :

Pour l'email : mesfar.sami@gmail.com

  1. mail = "mesfar.sami@gmail.com"
  2. pos_point = 7 (position du point)
  3. pos_arobase = 13 (position de @)
  4. Format vérifié : point et @ existent
  5. Nom = "mesfar" (caractères 0 à 6)
  6. Prenom = "sami" (caractères 8 à 12)
  7. Affichage : "Votre nom est mesfar" et "Votre prénom est sami"
Points clés de la solution :
  • Recherche directe dans la chaîne originale
  • Vérification préalable du format
  • Extraction précise avec positions calculées
  • Gestion des cas d'erreur
  • Code optimisé et efficace

📋 Algorithme amélioré

** Algorithme : Extraction de nom et prénom depuis email **
Algorithme ExtractionEmail
Début
// Déclaration des variables
Variables mail, Nom, Prenom : Chaîne
Variables pos_point, pos_arobase : Entier
// 1. Saisie de l'adresse email
Ecrire("Entrez votre adresse email : ")
Lire(mail)
// 2. Recherche de la position du point
pos_point <- pos(".", mail)
// 3. Recherche de la position de l'arobase
pos_arobase <- pos("@", mail)
// 4. Vérification du format de l'email
Si (pos_point = -1) ou (pos_arobase = -1) Alors
Ecrire("Erreur : Format d'email invalide !")
Sinon
// 5. Extraction du nom
Nom <- sous_chaine(mail, 0, pos_point)
// 6. Extraction du prénom
Prenom <- sous_chaine(mail, pos_point+1, pos_arobase)
// 7. Affichage des résultats
Ecrire("Votre nom est : ", Nom)
Ecrire("Votre prénom est : ", Prenom)
FinSi
Fin
🔍 Explications détaillées :
  1. Saisie : L'utilisateur entre son email complet
  2. Recherche point : On trouve la position du séparateur nom/prénom
  3. Recherche @ : On trouve la position du séparateur prénom/domaine
  4. Validation : On vérifie que les deux caractères existent
  5. Extraction nom : On prend les caractères du début jusqu'au point
  6. Extraction prénom : On prend les caractères entre point et @
  7. Affichage : On présente les résultats à l'utilisateur

🐍 Code Python

▶️ Exécuter
# Programme Python : Extraction nom et prénom depuis email
# 1. Saisie de l'adresse email
print("Entrez votre adresse email : ", end="")
mail = input()
# 2. Recherche de la position du point
pos_point = mail.find(".")
# 3. Recherche de la position de l'arobase
pos_arobase = mail.find("@")
# 4. Vérification du format de l'email
if pos_point == -1 or pos_arobase == -1:
print("Erreur : Format d'email invalide !")
else:
# 5. Extraction du nom
Nom = mail[:pos_point]
# 6. Extraction du prénom
Prenom = mail[pos_point+1:pos_arobase]
# 7. Affichage des résultats
print(f"Votre nom est : {Nom}")
print(f"Votre prénom est : {Prenom}")
🎯 Étapes du programme Python :
  1. Importation : Aucun module nécessaire
  2. Saisie : Utilisation de input() pour l'email
  3. Recherche : Méthode find() pour localiser "." et "@"
  4. Validation : Vérification avec comparaison à -1
  5. Extraction : Utilisation des tranches (slices) Python
  6. Affichage : Formatage avec f-string pour clarté
  7. Gestion erreurs : Message d'erreur en cas de format invalide
Correspondance Algorithme ↔ Python :
  • Ecrire()print()
  • Lire()input()
  • pos(".", mail)mail.find(".")
  • sous_chaine(mail, 0, pos_point)mail[:pos_point]
  • sous_chaine(mail, pos_point+1, pos_arobase)mail[pos_point+1:pos_arobase]
  • Si ... Alors ... Sinonif ... else