📝 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 :
- Saisir l'adresse email complète
- Rechercher la position du point "." dans la chaîne
- Rechercher la position de l'arobase "@" dans la chaîne
- Vérifier la validité du format
- Extraire le nom (caractères avant le point)
- Extraire le prénom (caractères entre point et arobase)
- Afficher les résultats obtenus
📋 Tableau des variables (TDO) :
| Nom Variable | Type | Description |
|---|---|---|
| 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
mail = "mesfar.sami@gmail.com"pos_point = 7(position du point)pos_arobase = 13(position de @)- Format vérifié : point et @ existent
Nom = "mesfar"(caractères 0 à 6)Prenom = "sami"(caractères 8 à 12)- 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 :
- Saisie : L'utilisateur entre son email complet
- Recherche point : On trouve la position du séparateur nom/prénom
- Recherche @ : On trouve la position du séparateur prénom/domaine
- Validation : On vérifie que les deux caractères existent
- Extraction nom : On prend les caractères du début jusqu'au point
- Extraction prénom : On prend les caractères entre point et @
- Affichage : On présente les résultats à l'utilisateur
🐍 Code Python
# 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 :
- Importation : Aucun module nécessaire
- Saisie : Utilisation de
input()pour l'email - Recherche : Méthode
find()pour localiser "." et "@" - Validation : Vérification avec comparaison à -1
- Extraction : Utilisation des tranches (slices) Python
- Affichage : Formatage avec f-string pour clarté
- 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 ... Sinon→if ... else