Soit une chaîne de caractères ch non vide formée uniquement par des lettres majuscules et dont la taille ne dépasse pas 30 caractères. On se propose de crypter cette chaîne selon la principe suivant :
- Former un chaîne chr en remplaçant chaque lettre de ch par son code ASCII. –
- Inverser les caractères de la chaîne chr.
Exemple : Le cryptage de la chaîne « BACSI » passe par les deux étapes suivantes :
1ère étape : On remplace chaque lettre par son code ASCII, on obtient la chaîne suivante : « 6665678373 »
2ème étape : On inverse les caractères de la chaîne, on obtient le résultat : « 3738765666 »
Ecrire un programme Python qui permet de saisir et de crypter une chaîne de caractères ch non vide formée uniquement par des lettres majuscules et dont la taille ne dépasse pas 30 caractères selon le principe décrit ci-dessus et d’afficher le résultat obtenu.
Dans cet algorithme, On va utiliser trois fonctions:
Algorithme du programme principal
1 2 3 4 5 |
Algorithme crytage_chaine Debut ch<- saisie_chaine() ecrire('la chaine cryptée est '+cryptage(ch)) Fin |
Déclaration des objets
Objet | Type / Nature |
ch | chaîne des caractères |
La fonction verif
Cette fonction vérifie si une chaîne est formée uniquement des lettres majuscules.
1 2 3 4 5 6 7 8 9 10 11 |
fonction verif(ch) Début Si long(ch)<=30 alors i<-0 Tant que ('A'<=ch[i]<='Z') et (i<long(ch)-1) alors i<-i+1 Fin tant que retourner ('A'<=ch[i]<='Z') Sinon retourner Faux Fin |
Déclaration des objets
Objet | Type / Nature |
i | entier |
La fonction saisie_chaine
Cette fonction retourne une chaîne formée uniquement des lettres majuscules..
1 2 3 4 5 6 7 8 9 10 |
fonction saisie_chaine() Début Ecrire('DDonner une chaine forme des lettres majuscules: ') lire(ch) Tant que verif(ch)=Faux : Ecrire('Donner une chaine forme des lettres majuscules: ') lire(ch) Fin tant que retourner ch Fin |
Déclaration des objets
Objet | Type / Nature |
ch | chaîne des caractères |
La fonction cryptage
Cette fonction retourne la chaîne cryptée.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
fonction cryptage(ch) Début chascii<-'' pour i de 0 à long(ch)- 1 faire v<-ord(ch[i]) chascii<-chascii + str(v) #Concaténer tous les codes ASCII ch_crypte<-'' Pour i de long(chascii)-1 à -1 [pas=-1] faire ch_crypte<-ch_crypte+chascii[i] # Inversion de la chaîne ASCII Fin pour retourner ch_crypte Fin |
Déclaration des objets
Objet | Type / Nature |
i | entier |
chascii | chaine des caractères |
ch_crypte | chaîne des caractère |
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 |
def verif(ch): if len(ch)<=30 : i=0 while ('A'<=ch[i]<='Z') and (i<len(ch)-1) : i=i+1 return ('A'<=ch[i]<='Z') else: return False def saisie_chaine(): ch=input('Donner une chaine forme des lettres majuscules: ') while verif(ch)==False : ch=input('Donner une chaine forme des lettres majuscules: ') return ch def cryptage(ch): chascii='' for i in range(len(ch)) : v=ord(ch[i]) chascii=chascii + str(v) # Concaténer tous les codes ASCII print(chascii) ch_crypte='' for i in range(len(chascii)-1,-1,-1) : ch_crypte=ch_crypte+chascii[i] # Inversion de la chaîne ASCII return ch_crypte # programme principal ch= saisie_chaine() print('la chaine cryptée est '+cryptage(ch)) |
Exécution du programme
Pour créer une application en Python pour crypter une chaîne de caractères formée uniquement de lettres majuscules selon le principe décrit, 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:
QLineEdit
nommé 'ch' pour entrer des lettres majuscules.
QPushButton
nommé 'cryptage_bouton_bt' pour exécuter le module crypter_ch .
QLabel
nommé 'msg' pour afficher un message d'erreur si long(ch) > 30 et si ch contient des caractères non alphabétique et afficher la chaîne cryptée.
Enregistrez le fichier avec l'extension .ui
, par exemple cryptage-chaîne-BACSI-interface.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 |
from PyQt5.uic import loadUi from PyQt5 import QtCore, QtGui from PyQt5.QtWidgets import * from PyQt5 import QtCore, QtGui, QtWidgets app = QApplication([]) windows = loadUi ("cryptage-chaîne-BACSI-interface.ui") def verif(ch): if len(ch)<=30 : i=0 while ('A'<=ch[i]<='Z') and (i<len(ch)-1) : i=i+1 return ('A'<=ch[i]<='Z') else: return False def crypter_ch() : ch = windows.ch.text() if verif(ch): windows.msg.clear() chascii='' for i in range(len(ch)) : v=ord(ch[i]) chascii=chascii + str(v) ch_crypte='' for i in range(len(chascii)-1,-1,-1) : ch_crypte=ch_crypte+chascii[i] windows.msg.setText('La chaine cryptee est '+ch_crypte) else : windows.msg.setText('La chaine doit etre formee des lettres majuscules ') windows.cryptage_bouton.clicked.connect(crypter_ch) windows.show() app.exec_() |
Exécution du programme
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