Une anagramme est un mot obtenu par transposition des lettres d’un autre mot.
Par exemple le mot chien est une anagramme du mot chine.
Ecrire un programme Python qui permet de saisir deux mots non vides mot1 et mot2 et vérifier si mot1 est une anagramme de mot2.
Pour vérifier si mot1
est une anagramme de mot2
, il existe plusieurs approches. L'une des plus simples et des plus couramment utilisées est de comparer les versions triées des deux mots. Voici les étapes de cette méthode :
1- S'assurer que les deux mots ont la même longueur :
Si les deux mots n'ont pas la même longueur, ils ne peuvent pas être des anagrammes.
2- Trier les lettres des deux mots :
En triant les lettres de chaque mot, on obtient une représentation normalisée de ces mots.
Par exemple, les mots "écoute" et "coute" (après avoir trié leurs lettres) deviendront "ceotu" et "ceotu".
3- Comparer les versions triées des mots :
Si les versions triées sont identiques, alors les mots sont des anagrammes.
Dans cet algorithme, On va utiliser deux fonctions.
Algorithme du programme principal
1 2 3 4 5 6 7 8 9 10 |
Algorithme anagramme Debut ch1<-saisie_alphabetique() ch2<-saisie_alphabetique() Si (test_anagramme(ch1,ch2)) alors Ecrire('les deux chaine sont anagrammes') Sinon: Ecrire('les deux chaine sont non anagrammes') Finsi Fin |
Déclaration des objets
Objet | Type / Nature |
ch1 | chaîne des caractères |
ch2 | chaîne des caractères |
La fonction saisie_alphabetique
Cette fonction exige la saisie d'une chaîne des caractères contenant seulement des alphabets.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Fonction saisie_alphabetique() Début test<-Faux Tant que (test=Faux): Ecrire("donner une chaine des caracteres alphabetique ") lire(ch) i<-0 Tant que (i<long(ch)-1) and ('A'<= Majus(ch[i]) <='Z') faire i<-i+1 Si ('A'<= Majus(ch[i]) <='Z') faire test<-Vrai Finsi Fin tantque retourner ch Fin |
Déclaration des objets
Objet | Type / Nature |
ch | chaîne des caractères |
test | Booléen |
La fonction test_anagramme
Cette fonction teste si deux chaînes des caractères sont anagrammes ou non.
1 2 3 4 5 6 7 8 9 10 11 12 |
Fonction test_anagramme(ch1,ch2) Début Si long(ch1)=long(ch2) alors # transformer les chaines en Majuscule et les trier ch1<-trier(Majus(ch1)) ch2<-trier(Majus(ch2)) retourner ch1=ch2 Sinon return Faux Finsi Fin |
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 |
def saisie_alphabetique(): test=False while (test==False): ch=input("donner une chaine des caracteres alphabetique ") i=0 while (i<len(ch)-1) and ('A'<= ch[i].upper()<='Z'): i=i+1 if ('A'<=ch[i].upper()<='Z'): test=True return ch def test_anagramme(ch1,ch2): if len(ch1)==len(ch2): # transformer les chaines en Majuscule et les trier ch1=sorted(ch1.upper()) ch2=sorted(ch2.upper()) return ch1==ch2 else: return False # programme principal ch1=saisie_alphabetique() ch2=saisie_alphabetique() if (test_anagramme(ch1,ch2)) : print ('les deux chaine sont anagrammes') else: print ('les deux chaine sont non anagrammes') |
Exécution du programme
Pour créer une application en Python pour faire le test anagramme des deux chaînes ch1 et ch2 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 une chaîne des caractères .
QPushButton
nommé 'chiffrer_bt' pour exécuter le module codage_phrase.
QLabel
nommé 'code' pour afficher le message chiffré.
Enregistrez le fichier avec l'extension .ui
, par exemple test-anagramme.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 |
#importation des modules nécessaires from PyQt5.QtWidgets import QApplication from PyQt5 import uic application = QApplication([]) window = uic.loadUi("test-anagramme.ui") def saisie_alphabetique(ch): i=0 while (i<len(ch)-1) and ('A'<= ch[i].upper()<='Z'): i=i+1 return ('A'<=ch[i].upper()<='Z') def test_anagramme(): ch1=window.ch1.text() # recevoir la valeur du QLineEdit ch1 ch1=ch1.upper() ch2=window.ch2.text() # recevoir la valeur du QLineEdit ch2 ch2=ch2.upper() if saisie_alphabetique(ch1) and saisie_alphabetique(ch2) : if len(ch1)==len(ch2): ch1=sorted(ch1.upper()) ch2=sorted(ch2.upper()) if ch1==ch2 : window.msg.setText('les deux chaine sont anagrammes') else: window.msg.setText('les deux chaine sont non anagrammes') else: window.msg.setText('les deux chaine sont non anagrammes') else: window.msg.setText('les deux chaine doivent contenir des alphabets') # si on clique sur le anagramme_bt, la fonction test_anagramme est exécutée window.anagramme_bt.clicked.connect(test_anagramme) window.show() application.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