Exercices corrigés Python (Série 6)

17 Sep 2017 17 Sep 2017 37675 vues ESSADDOUKI Mostafa 9 min de lecture

Exercice 1 — Évaluation de la force d'un mot de passe

 Exercice

Calculer le score et la force d'un mot de passe

 Niveau : Intermédiaire
Définition — Score de force d'un mot de passe Le score est calculé par : Score = Bonus − Pénalités

BonusFormule
Longueur totalelen(pwd) × 4
Diversité majuscules(len − nb_maj) × 2
Diversité minuscules(len − nb_min) × 3
Caractères spéciauxnb_non_alpha × 5
PénalitéFormule
Suite minuscules consécutiveslongMin(pwd) × 2
Suite majuscules consécutiveslongMaj(pwd) × 3

Classification : score < 20 → Très faible | < 40 → Faible | < 80 → Fort | ≥ 80 → Très fort

  Exemple de calcul — P@cSI_promo2017

StatistiqueValeurContribution
Longueur totale1515 × 4 = 60
Diversité maj (P, S, I → 3)15 − 3 = 1212 × 2 = 24
Diversité min (c,p,r,o,m,o → 6)15 − 6 = 99 × 3 = 27
Non-alphabétiques (@,_,2,0,1,7 → 6)66 × 5 = 30
Total Bonus141
Pénalité min ('promo' → 5)55 × 2 = 10
Pénalité maj ('SI' → 2)22 × 3 = 6 (≠ 4 dans l'exemple)
Total Pénalités16
Score final125 → Très fort
Travail demandé :
  1. NbCMin(pwd) — nombre de lettres minuscules
  2. NbCMaj(pwd) — nombre de lettres majuscules
  3. NbCAlpha(pwd) — nombre de caractères non alphabétiques
  4. LongMaj(pwd) — longueur de la plus longue suite de majuscules
  5. LongMin(pwd) — longueur de la plus longue suite de minuscules
  6. Score(pwd) — afficher le score et la force du mot de passe
Exemple
Mot de passe
P@cSI_promo2017
Résultat
Score : 125
Force : Très fort
Détail : Bonus = 60+24+27+30 = 141 — Pénalités = 10+6 = 16 → Score = 125

Exercice 2 — Décodeur Braille

 Exercice

Convertir un texte Braille en alphabet français

 Niveau : Intermédiaire
Définition — Code Braille (6 points) En braille standard, chaque caractère est représenté par une cellule de 6 points numérotés 1 à 6. Chaque point est soit saillant (*) soit non saillant (-).

Disposition des points :
14
25
36
  →   Représentation linéaire : positions 1, 2, 3, 4, 5, 6

Exemple : H = **--*- (points 1, 2, 5 saillants)
Structure des fichiers Codes_braille.txt : une ligne par lettre → LETTRE code6
Exemple : A *-----, B **----

Braille.txt : une ligne par mot, chaque mot = blocs de 6 caractères concaténés
Exemple : ligne **----*-*-*- = B + O = "BO"

  Décodage de "BONJOUR"

LettreCode BraillePoints saillants
B**----1, 2
O*-*-*-1, 3, 5
N*-***-1, 3, 4, 5
J-*-**-2, 4, 5
U*-*--*1, 3, 6
R***-*-1, 2, 3, 5
Travail demandé :

Écrire un programme Python pour décoder le fichier Braille.txt et afficher le texte en alphabet français (un espace entre chaque mot).

Exemple
Braille.txt
**----*-*-*-*-***--*-**-*-*-*-*-*--****-*-
****---***---*-*--
Résultat
BONJOUR PSI
Principe : chaque ligne = un mot → blocs de 6 caractères → lettre via dictionnaire. Les mots sont réunis avec un espace.

Récapitulatif

ExerciceFonctionsTechnique cléBugs corrigés
Force mot de passeNbcMin, NbcMaj, NbcAlpha, longMin, longMaj, scoreComptage de caractères, suites consécutives, re.findallComparaisons <<= dans longMaj/longMin ; remise à zéro de s
Décodeur Brailledictionnaire, decoder_ligne, decoder_fichierDictionnaire inverse code→lettre, découpage en blocs de 6len(j)//6len(c)//6 ; split(' ')split()
Points clés à retenir
  • Toujours appliquer .strip() avant de calculer len() sur une ligne lue depuis un fichier (le \n final peut fausser le calcul).
  • Préférer split() sans argument pour parser des fichiers de données : gère les espaces multiples et tabulations automatiquement.
  • Les comparaisons de caractères doivent être larges (<=) pour inclure les bornes ('A', 'Z', 'a', 'z').
  • Utiliser with open(...) garantit la fermeture des fichiers même en cas d'exception.
  • re.findall(r'[A-Z]+', s) est une façon élégante d'extraire toutes les séquences consécutives de majuscules sans boucle explicite.
Sortie
// La sortie apparaîtra ici…
Prêt · Ctrl+Entrée pour exécuter

Discussion (0)

Soyez le premier à laisser un commentaire !

Laisser un commentaire

Votre commentaire sera visible après modération.