Langage de programmation Python Mr. ESSADDOUKI Mostafa http://www.developpement
Langage de programmation Python Mr. ESSADDOUKI Mostafa http://www.developpement-informatique.com Exercices Corrigés Python (série 6) Exercice 1 Un administrateur d’un site web veut assurer un maximum de sécurité pour les utilisateurs du site. Pour ceci il décide de réaliser une application qui évalue la force des mots de passe des différents utilisateurs du site, sachant qu’un mot de passe est une chaine de caractères qui ne comporte pas d’espaces et de lettres accentuées. La force d’un mot de passe varie, selon la valeur d’un score calculé, de ‘Très faible’ jusqu’à ‘Très fort’ : § Si le score <20, la force du mot de passe est ‘Très faible’ § Sinon si le score<40, la force d’un mot de passe est ‘Faible’ § Sinon si le score <80, la force du mot de passe est ‘Fort’ § Sinon la force du mot de passe est ‘Très fort’ Le score se calcule en additionnant des bonus et en retranchant des pénalités. Les bonus attribués sont : § Nombre total de caractères * 4 § (Nombre total de caractères – nombre de lettres majuscules) * 2 § (Nombre total de caractères – nombre de lettres minuscules) * 3 § Nombre de caractères non alphabétiques * 5 Les pénalités imposées sont : § La longueur de la plus longue séquence de lettres minuscules * 2 § La longueur de la plus longue séquence de lettres majuscules * 3 Exemple : Pour le mot de passe ‘P@cSI_promo2017’, le score se calcule comme suit : La somme de bous = 15*4 + (15-3) *2 + (15-6) *3+6*5=141 § Le nombre total de caractères = 15 § Le nombre de lettres majuscules = 3 § Le nombre de lettres minuscules=6 § Le nombre de caractères non alphabétiques =6 La somme des pénalités = 5*2+2*2=14 § La longueur de la plus longue séquence de lettres minuscules(‘promo’) =5 § La longueur de la plus longue séquence de lettres majuscules(‘SI’) =2 Le score final = 141-14=127 ; puisque 127>80 alors le mot de passe est considéré comme ‘Très fort’ Travail demandé : 1. Ecrire une fonction NbCMin(pass) qui retourne le nombre de caractères minuscules. 2. Ecrire une fonction NbCMaj(pass) qui retourne le nombre de caractères majuscules. 3. Ecrire une fonction NbCAlphapass) qui retourne le nombre de caractères non alphabétiques. 4. Ecrire une fonction LongMaj(pass) retourne la longueur de la plus longue séquence de lettres majuscules. 5. Ecrire une fonction LongMin(pass) retourne la longueur de la plus longue séquence de lettres minuscules. 6. Ecrire une fonction Score(pass) qui affiche le score d’un mot de passe Correction : Langage de programmation Python Mr. ESSADDOUKI Mostafa http://www.developpement-informatique.com def NbcMin(passe): nb=0 for i in passe: if 'a'<=i<='z': nb+=1 return nb def NbcMaj(passe): nb=0 for i in passe: if 'A'<=i<='Z': nb+=1 return nb def NbcAlpha(passe): return len(passe)-NbcMaj(passe)-NbcMin(passe) def longMaj(passe): d=0 s=0 i=0 while i< len(passe): if 'A'<passe[i]<'Z': s+=1 else: if s > d: d=s s=0 i+=1 return d def longMin(passe): d=0 s=0 i=0 while i< len(passe): if 'a'<passe[i]<'z': Langage de programmation Python Mr. ESSADDOUKI Mostafa http://www.developpement-informatique.com s+=1 else: if s > d: d=s s=0 i+=1 return d def score(password): bonus=(len(password)-NbcMin(password))*3+(len(password)- NbcMaj(password))*2+(len(password)-NbcAlpha(password))*5 penalites=longMaj(password)*3+longMin(password)*2 val=bonus-penalites if val<20: print('Trè s faible') elif val<40: print('Faible') elif val<80: print('Fort') else: print('Trè s fort') pas="P@SI_promo2016" score(pas) Exercice 2 : Louis Braille, est l’inventeur du système d’écriture tactile à points saillants, à l’usage des personnes aveugles ou fortement malvoyantes. En braille standard : § Un caractère est représenté par six points numérotés de 1 à 6 et disposés comme le montre la Figure 1 § Un point peut être saillant (en relief) ou non, comme le montre la Figure 2. § Le nombre et la disposition des points en relief définissent un caractère. Figure 1 Figure 2 Langage de programmation Python Mr. ESSADDOUKI Mostafa http://www.developpement-informatique.com Dans la suite, on s’intéressera à la représentation des 26 lettre majuscules de l’alphabet français. Le tableau suivant donne cette représentation. N.B chaque point noir représente un point saillant. Etant donné un fichier d’enregistrements intitulé ‘Codes_braille.txt’, ou chaque enregistrement est composé de deux champs : § Un champ lettre contenant une lettre majuscule de l’alphabet français § Un champ codage contenant une chaine de 6 caractères représentant l’équivalent en braille de la lettre. En utilisant le fichier ‘Code_brailles.txt’, o se propose de convertir le fichier texte intitulé ‘Braille.txt’ contenant une représentation braille d’un texte en son équivalent en alphabet français puis d’afficher le résultat obtenu. § Sachant que : § Chaque ligne du fichier ‘braille.txt’ contient la représentation d’un seul mot. § La représentation d’un mot est une concaténation de blocs de six caractères. § Chaque bloc de six caractères représente une lettre du mot. § Un caractère peut être un astérisque (‘*’) représentant un point saillant, ou un trait d’union (‘-‘) représentant un point non saillant. § Les caractères ‘*’ et ‘-‘ sont disposés selon l’ordre des numéros des points qu’ils représentent. Par exemple, la lettre ‘H’ sera représentée par block de six caractères suivant : * * - - * - 1 2 3 4 5 6 Exemple : Etant donné le contenu du fichier ‘Codes_braville.txt’ donc une partie est représentée comme suit : A *----- B **---- C *--*-- D *--**- … Si le contenu du fichier ‘Braille.txt’ est le suivant : **----*-*-*-*-***--*-**-*-*-*-*-*--****-*- Langage de programmation Python Mr. ESSADDOUKI Mostafa http://www.developpement-informatique.com ****---***---*-*-- Le programme affichera la chaine : ‘BONJOUR PSI’ En effet : -‘BONJOUR’ est l’équivalent en alphabet français de la première ligne du fichier ‘Braille.txt’. B O N J O U R **---- *-*-*- *-***- -*-**- *-*-*- *-*--* ***-*- -‘PSI’ est l’équivalent en alphabet français de la deuxième ligne du fichier ‘braille.txt’ Ecrire un programme Python permettant de résoudre ce problème. Vous pouvez utiliser plusieurs fonctions Correction : def dictionnaire(fichier) : fichier=open(fichier) dic={} for i in code: c=i.strip() l=c.split(' ') cle=l[1] dic[cle]=l[0] code.close() return dic def coder(fichier) : dic=dictionnaire('codes_Braille.txt') f=open(fichier) s="" for j in f: c=j.strip() nb=len(j)//6 po=0 for k in range(nb): cle=c[po:po+6] s+=dic[cle] po+=6 s+=' ' return s print(coder('braille.txt')) uploads/S4/ exercices-corriges-python-serie-6-exercice-1.pdf
Documents similaires










-
33
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Dec 03, 2022
- Catégorie Law / Droit
- Langue French
- Taille du fichier 0.3445MB