Pour générer automatiquement des mots de passes pour les utilisateurs d’une application informatique, on suit les étapes suivantes :
1- On remplit un tableau T par les noms de n utilisateurs (avec 1≤n≤9), sachant qu’un nom d’utilisateur est formé de 20 lettres majuscules au maximum.
2- On génère un tableau TM contenant les mots de passe des n utilisateurs. Un mot de passe est généré en apportant les modifications suivantes au nom de l’utilisateur:
- Remplacer toutes les occurrences de la lettre ‘’A’’ par le caractère ’@’.
- Remplacer toutes les occurrences de la lettre ‘’O’’ par le caractère ’0’.
- Ajouter à la fin de la chaîne obtenue précédemment, le nombre de voyelles contenues dans le nom de l’utilisateur. La chaine résultante représente le mot de passe.
Exemple : Pour le tableau T des utilisateurs suivant :
RAOUF | ZERIEB | AZIZA | FATMA | RAYEN | NADIA |
Le tableau TM des mots de passe généré est le suivant :
R@0UF3 | ZERIEB3 | @ZIZ@3 | F@TM@2 | R@YEN3 | N@DI@3 |
Par exemple, le mot de passe de l’utilisateur « RAOUF » est « R@0UF3 ». En effet,
- En remplaçant toutes les occurrences de la lettre ‘’A’’ par le caractère ’@’, on obtient « R@OUF»
- Remplacer toutes les occurrences de la lettre ‘’O’’ par le caractère ’0’, on obtient « R@0UF».
- En ajoutant à la fin de la chaine obtenue, le nombre des voyelles dans le nom de l’utilisateur, on obtient le mot de passe « R@0UF3 ».
On se propose d’écrire un programme Python permettant de générer automatiquement les mots de passe des utilisateurs.
Pour générer automatiquement les mots de passe des utilisateurs à partir de leurs noms, l'algorithme peut suivre les étapes ci-dessous :
1-Initialisation :
a) Créer un tableau T
contenant les noms des utilisateurs.
b) Créer un tableau vide TM
qui contiendra les mots de passe générés.
2- Parcours des noms d'utilisateurs : Pour chaque utilisateur dans T
:
a) Remplacer chaque occurrence de la lettre 'A' par '@'.
b) Remplacer chaque occurrence de la lettre 'O' par '0'.
c) Compter le nombre de voyelles dans le nom de l'utilisateur (les voyelles étant : 'A', 'E', 'I', 'O', 'U', 'Y').
d) Ajouter le nombre de voyelles à la fin du nom modifié pour former le mot de passe.
e) Insérer le mot de passe dans le tableau TM
.
3- Retourner le tableau TM
contenant les mots de passe générés.
Dans cet algorithme, On va utiliser trois fonctions et trois procédures :
Algorithme du programme principal
1 2 3 4 5 6 7 |
Algorithme acces_compte_site Debut n<-saisie_taille() remplir(t,n) generer_motdepasse(t,tm,n) afficher(t,n) Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
n | entier |
t | tableau de 30 chaînes des caractères |
tm | tableau de 30 chaînes des caractères |
La fonction saisie_taille
Cette fonction retourne la taille du tableau saisie par l'utilisateur.
1 2 3 4 5 6 7 8 9 10 |
Fonction saisie_taille(): Début Ecrire('donner un entier entre 1 et 9') lire (n) Tant que n<1 ou n>9 faire Ecrire('donner entre entre 1 et 9') lire (n) Fin tant que retourner n Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
n | entier |
La fonction verif_majus
Cette fonction vérifie si une chaîne est composée uniquement des lettres majuscules et retourne une valeur booléenne(Vrai ou Faux).
1 2 3 4 5 6 7 8 |
Fonction verif_majus(ch:chaine):booleen Début i<-0 Tant que (i<long(ch)-1) et ('A'<=ch[i]<='Z') faire i<-i+1 Fin tant que retourner ('A'<=ch[i]<='Z') Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
i | entier |
La procédure remplir
Cette procédure remplit le tableau t par des chaînes composées uniquement des lettres majuscules et dont leur longueur <=20
1 2 3 4 5 6 7 8 9 10 11 |
Procédure remplir(@t:Tab;n:entier) Début Pour i de 0 à n-1 faire Ecrire("donner elt N°"+i+" forme par des majuscules et son longueur <=20: ") lire(tid[i]) Tant que verif_majus(t[i])=Faux ou long(t[i])<1 ou long(t[i])>20 faire Ecrire("donner elt N°"+i+" forme par des majuscules et son lonugeur <=20: ") lire(tid[i]) Fin tant que Fin pour Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
i | entier |
La fonction nbr_voyelles
Cette fonction retourne le nombre des voyelles qui se trouvent dans une chaîne des caractères
1 2 3 4 5 6 7 8 9 10 |
Fonction nbr_voyelles(ch:chaine):booleen Début cp=0 Pour i de 0 à long(ch)-1 faire Si (ch[i] dans {'A','I','O','Y','U','E'}) alors cp<-cp+1 Finsi Fin pour retourner cp Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
i | entier |
cp | entier |
La procédure generer_motdepasse
Cette procédure génère automatiquement les mots de passe des utilisateurs et les stocke dans le tableau tm.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Procedure generer_motdepasse(t:Tab;@tm:Tab,n:entier) Début Pour i de 0 à n-1 faire ch<-Conch(nbr_voyelles(t[i])) ch1<-t[i] Pour j de 0 à long(t[i])-1 faire Si ch1[j]='A' alors ch1[j]<-'@' Sinon si ch1[j]='O' : ch1[j]<-'0' Fin si Fin pour tm[i]<-ch1+ch Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
i | entier |
j | entier |
ch | chaîne des caractères |
ch1 | chaîne des caractères |
La procédure affiche
Cette procédure affiche les éléments du tableau
1 2 3 4 5 6 7 |
Procédure afficher(t:Tab;n:entier) Début Ecrire('le tableau contenant les mots de passes generes') Pour i de 0 à n-1 faire Ecrire('tm['+i+']= '+tm[i]) Fin pour Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
i | entier |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
from numpy import array t=array([str]*30) tm=array([str]*30) def saisie_taille() : n=int(input("donner un entier entre 1 et 9: ")) while(n<1) or (n>9) : n=int(input("donner un entier entre 1 et 9: ")) return n def verif_majus(ch): i=0 while (i<len(ch)-1) and ('A'<=ch[i]<='Z'): i=i+1 return ('A'<=ch[i]<='Z') def remplir(t,n): for i in range (n) : t[i]=input("donner elt N°"+str(i)+" forme par des majuscules et son longueur <=20: ") while verif_majus(t[i])==False or len(t[i])<1 or len(t[i])>20: t[i]=input("donner elt N°"+str(i)+" forme par des majuscules et son longueur <=20: ") def nbr_voyelles(ch): cp=0 for i in range(len(ch)): if (ch[i] in {'A','I','O','Y','U','E'}): cp=cp+1; return cp def generer_motdepasse(t,tm,n): for i in range(n): ch=str(nbr_voyelles(t[i])) ch1=t[i] for j in range(len(t[i])): if ch1[j]=='A': temp = list(ch1) temp[j] = '@' ch1=''.join(temp) elif ch1[j]=='O' : temp = list(ch1) temp[j] = '0' ch1=''.join(temp) tm[i]=ch1+ch def afficher(t,n): print('le tableau contenant les mots de passes generes') for i in range(n): print('tm['+str(i)+']= '+tm[i]) #programme principal n=saisie_taille() remplir(t,n) generer_motdepasse(t,tm,n) afficher(t,n) |
Exécution du programme
Pour créer une application en Python pour générer automatiquement les mots de passe des utilisateurs. en utilisant Qt Designer pour l'interface graphique, suivez ces étapes :
a- Ouvrez Qt Designer et créez un nouveau fichier de type Main Window.
b- Ajoutez ces widgets:
QLabel
nommé 'ch' pour entrer la liste des identificateurs.
QPushButton
nommé 'remplir_bt' pour exécuter le module createTab.
QPushButton
nommé 'generer_bt' pour exécuter le module generation_motdepasse.
QLabel
nommé 'msg' pour afficher un message d'erreur
QLabel
nommé 'tabt_label' pour contenir les identificateurs.
QLabel
nommé 'tabtm_label' pour contenir les mots de passe.
Enregistrez le fichier avec l'extension .ui
, par exemple tabtab-2.ui
.
Voici un exemple de script Python qui utilise l'interface graphique générée par Qt Designer.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
from PyQt5.uic import loadUi from PyQt5 import QtCore, QtGui from PyQt5.QtWidgets import * from PyQt5 import QtCore, QtGui, QtWidgets from numpy import array t=array([str]*30) tm=array([str]*30) app = QApplication([]) windows = loadUi ("tabtab-2.ui") # Fonction qui supprime des espaces de la chaine des carcatères def supprimer_espaces (ch) : while(ch[0]==' '): # elimnier tous les espaces au début de la chaine ch=ch[1:len(ch)] while(ch[len(ch)-1]==' '): # elimnier tous les espaces a la fin de la chaine ch=ch[0:len(ch)-1] while (ch.find(' ')>0): ch=ch.replace(" ", " ") # remplacer les doubles espaces apar un seul espace return ch # Procedure qui remplit un tableau par des identifiants a partir d'une chaine des caractère def createTab(): windows.tabt_label.clear() windows.tabtm_label.clear() windows.msg.clear() ch = windows.ch.text() global n # pour la taille di tableau if ch=="": windows.msg.setText("Veuillez remplir la chaîne") else: windows.msg.clear() # effacer le message d erreur ch= supprimer_espaces(ch) i=0 j=0 ch1='' # parcourir les caracteres de la chaine test_long=True while(i<len(ch)) and test_long and ('A'<=ch[i]<='Z' or ch[i]==' ') : if ('A'<=ch[i]<='Z'): ch1=ch1+ch[i] if ((ch[i]==' ') or (i==len(ch)-1)) : t[j]=ch1 if len(t[j])<1 or len(t[j])>20: test_long=False ch1='' j=j+1 i=i+1 if test_long and i==len(ch): if 1<=j<=9: n=j tab='' for k in range (j) : tab=tab+ 't['+str(k)+']= '+t[k]+ '\n' #afficher les elements du tableau windows.tabt_label.setText(tab) else: windows.msg.setText("le nombre des mots n'est pas entre 1 et 9") else: windows.msg.setText("les mots doit etre compose des lettres majuscules et sa longueur <=20") # Procedure qui remplit un tableau par des mots a partir d'une chaine des caractère def nbr_voyelles(ch): cp=0 for i in range(len(ch)): if (ch[i] in {'A','I','O','Y','U','E'}): cp=cp+1; return cp def generation_motdepasse(): for i in range(n): ch=str(nbr_voyelles(t[i])) ch1=t[i] for j in range(len(t[i])): if ch1[j]=='A': temp = list(ch1) temp[j] = '@' ch1=''.join(temp) elif ch1[j]=='O' : temp = list(ch1) temp[j] = '0' ch1=''.join(temp) tm[i]=ch1+ch tab='' for k in range (n) : tab=tab+ 'tm['+str(k)+']= '+tm[k]+ '\n' #afficher les elements du tableau windows.tabtm_label.setText(tab) windows.remplir_bt.clicked.connect ( createTab ) windows.generer_bt.clicked.connect ( generation_motdepasse ) windows.show() app.exec_() |
Exécution du programme
1) Entrer les identificateurs
2) Générer les mots de passe correspondants
Vous pouvez voir aussi :
La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.
Zaouiet Kontech-Jemmel-Monastir-Tunisie
+216 92 886 231
medaliprof@gmail.com
Site robotique réalisé par Mohamed Ali-Prof Info