Un « totalogramme » est une chaine dont chacun de ses mots commence et se termine par la même lettre.
Exemple : La chaine « ALLALA EMPREINTE TEMPORAIREMENT A DAOUD SES SOULIERS » est un « totalogramme ».
Ecrire un programme Python qui permet de saisir une chaine de caractères composée uniquement de lettres majuscules et d’espaces (on suppose que deux mots consécutifs sont séparés par un seul espace) ; puis d’afficher un message indiquant si cette chaine est « totalogramme » ou non.
1- Saisie de la chaîne : Le programme commence par demander à l'utilisateur de saisir une chaîne composée uniquement de lettres majuscules et d'espaces.
2- Découpage en mots : La chaîne est ensuite divisée en mots. Les mots sont séparés par un espace unique, donc on va créer un tableau des chaînes pour contenir les mots séparés.
3- Vérification des mots : Pour chaque mot de la chaîne, on vérifie si la première lettre est identique à la dernière lettre.
4- Affichage du résultat : Si tous les mots respectent la condition (commencent et se terminent par la même lettre), alors la chaîne est un « totalogramme », sinon elle ne l'est pas.
Dans cet algorithme, On va utiliser 4 fonctions :
Algorithme du programme Principal
1 2 3 4 5 6 7 8 |
Algorithme totalogramme Debut ch<-saisie_chaine() Si test_totalogramme(t,n) alors Ecrire(ch+" est une chaine totalogramme") Sinon Ecrire(ch+" est une chaine non totalogramme") Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
ch | chaîne des caractères |
La fonction supprimer_espaces
Cette fonction remplace le double espace par un seul espace.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
foncttion supprimer_espaces(ch:chaîne):chaîne Début Tant que(ch[0]==' ') faire # elimnier tous les espaces au début de la chaine ch<-Sous_chaine(ch, 1, long(ch)) Fin tant que1 Tant que (ch[long(ch)-1]==' ') faire # elimnier tous les espaces a la fin de la chaine ch<- Sous_chaine(ch, 0, long(ch)-1) Fin tant que Tant que (Pos(ch,' ')>0) faire ch<-ch.replace(" ", " ") # remplacer les doubles espaces apar un seul espace Fin tantq ue retourner ch Fin |
La fonction verif_decouper_chaine
Cette fonction vérifie que la chaîne est composée seulement des lettres et des espaces, la découpe en des mots qui seront stockés dans un tableau.
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 |
Fonction verif_decouper_chaine(ch:chaîne):booleen Début ch<-supprimer_espaces(ch) n<-0 ch1<-'' j<-0 # Verifier si la chaine est composee uniquement par des lettres majuscules et des espaces Tant que (i<long(ch)) et (('A'<=ch[i]<='Z') ou (ch[i]==' ')) faire Si ('A'<=ch[i]<='Z') alors ch1<-ch1+ch[i] Fin si Si ((ch[i]==' ') ou (i==long(ch)-1)) : t[j]<-ch1 ch1<-'' j<-j+1 Fin si i<-i+1 Fin tant que Si (i<long(ch)) alors # si la chaine contient des caracteres non alphabetique et des espaces Ecrire("la chaine doit contenir des caracteres non majuscules") retourner Faux Sinon n<-j #pour la taille du tableau des chaines retourner Vrai Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
i | entier |
n | entier |
j | entier |
La fonction test_totalogramme
Cette fonction vérifie si une chaîne est tolagramme ou non en parcourant ces mots qui se trouve dans le tableau des chaînes.
1 2 3 4 5 6 7 8 9 10 |
fonction test_totalogramme(t:Tab,n:entier) Début i<-0 ch<-t[0] Tant que (i<n-1) et (ch[0]=ch[long(ch)-1]) faire i<-i+1 ch<-t[i] Fin tant que retourner ch[0]=ch[long(ch)-1] Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
i | entier |
ch | chaîne des caractères |
La fonction saisie_chaine
Cette fonction saisie et vérifie si la chaîne est composé uniquement des lettres et des espaces
1 2 3 4 5 6 7 8 9 10 |
fonction saisie_chaine() Début Ecrire('donner un message contenant uniquement par des lettres majuscules et des espaces:') Lire(ch) Tant que (verif_decouper_chaine(ch)=Faux) faire Ecrire('donner un message contenant uniquement par des lettres majuscules et des espaces:') Lire(ch) Fin tant que retourner ch Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
ch | chaîne des caractères |
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 |
import random from numpy import array t=array([str]*100) # Fonction qui supprime les doubles 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 def verif_decouper_chaine(ch): ch=supprimer_espaces(ch) global n #pour la taille du tableau des chaines i=0 ch1='' j=0 # Verifier si la chaine est composee uniquement par des lettres majusculeset des espaces while(i<len(ch)) 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 ch1='' j=j+1 i=i+1 if (i<len(ch)) : # si la chaine contient des caracteres non alphabetique et des espaces print("la chaine doit contenir des caracteres non majuscules") return False else: n=j #pour la taille du tableau des chaines return True def test_totalogramme(t,n): i=0 ch=t[0] while (i<n-1) and (ch[0]==ch[len(ch)-1]): i=i+1 ch=t[i] return ch[0]==ch[len(ch)-1] # Saisie du message et placer chaque caractere du message dans une case du tableau T def saisie_chaine(): ch=input('donner un message contenant uniquement par des lettres majuscules et des espaces:\n') while verif_decouper_chaine(ch)==False : ch=input('donner un message contenant uniquement par des lettres majuscules et des espaces:\n ') return ch # programme principal ch=saisie_chaine() if test_totalogramme(t,n): print(ch+" est une chaine totalogramme") else: print(ch+" est une chaine non totalogramme") |
Exécution du programme
Pour remplir un tableau d'entiers à partir d'une chaîne de caractères en Python, vous pouvez suivre les étapes suivantes :
1- Découper la chaîne de caractères en sous-chaînes contenant les entiers.
2- Convertir chaque sous-chaîne en entier.
3- Ajouter chaque entier au tableau.
Pour créer une application en Python et Designer QT qui permet saisir une chaine de caractères et d’afficher un message indiquant si cette chaine est « totalogramme » ou non, on va suivre 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 entiers .
QPushButton
nommé 'remplir_bt' pour exécuter le module createTab afin de remplir le tableau à partir de la chaine 'ch'.
QPushButton
nommé 'bt_test' pour tester si une chaîne est totalogramme ou non.
QLabel
nommé 'msg' pour afficher un message d'erreur et le résultat du test totalogramme
QLabel
nommé 'tab_label' pour afficher les éléments du tableau T.
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 |
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]*100) 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 entiers a partir d'une chaine des caractère def createTab(): 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 while((i<len(ch)) 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 ch1='' j=j+1 i=i+1 if (i<len(ch)) : windows.msg.setText("La chaine doit contenir des mots en majuscules ") else : n=j tab='' for k in range (j) : tab=tab+ 't['+str(k)+']= '+ str(t[k])+ '\n' #afficher les elements du tableau windows.tab_label.setText(tab) def test_totalogramme(): i=0 ch=t[0] while (i<n-1) and (ch[0]==ch[len(ch)-1]): i=i+1 ch=t[i] if ch[0]==ch[len(ch)-1] : windows.msg.setText("Cette chaine est totalogramme") else: windows.msg.setText("Cette chaine est non totalogramme") windows.remplir_bt.clicked.connect ( createTab ) windows.bt_test.clicked.connect ( test_totalogramme ) 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