Ecrire un programme Python qui détermine et affiche tous les entiers n de 4 chiffres qui vérifient la relation suivante :
N=somme des puissances kème de ses chiffres, avec 1<=k<=5. Exemple : 1634 = 14+ 64 + 34+ 44
Pour déterminer et afficher tous les entiers N de 4 chiffres qui vérifient la relation suivante : N=Somme des chiffresk avec 1≤k≤5
nous pouvons suivre les étapes ci-dessous :
1- Parcourir tous les entiers de 4 chiffres : Les entiers de 4 chiffres varient de 1000 à 9999.
2- Extraire les chiffres d'un entier : Pour chaque entier, extraire ses chiffres individuels.
3- Calculer la somme des puissances des chiffres : Calculer les différentes puissances des chiffres pour k=1,2,3,4 et 5 et vérifier si une de ces sommes est égale à l'entier original.
4- Afficher l'entier s'il vérifie la condition.
Dans cet algorithme, On va utiliser trois fonctions :
Algorithme du programme principal
1 2 3 4 5 6 7 8 |
Algorithme test_puissance Debut Pour i de 1000 à 9999 Si test(i) alors Ecrire (t[i]) Fin si Fin pour Fin |
Déclaration des objets
Objet | Type / Nature |
i | entier |
La fonction puissance
Cette fonction retourne la puissance n de e.
1 2 3 4 5 6 7 8 |
foncttion puissance(n,e) Début exp<-1 pour ide 1 à e exp=exp*n Fin pour retourner exp Fin |
Déclaration des objets
Objet | Type / nature |
i | entier |
exp | entier |
La fonction somme_puissance
Cette fonction retourne la somme de la puissance kème des chiffres de n.
1 2 3 4 5 6 7 8 9 |
foncttion puissance(n,e) Début ch=Conch(n) s<-0 Pour i de 0 à 3 faire s<-s+puissance(Valeur(ch[i]),k) Fin pour Retourner s Fin |
Déclaration des objets
Objet | Type / Nature |
ch | chaîne des caractères |
i | entier |
s | entier |
La fonction test
Cette fonction retourne teste si n est égal à la somme de la puissance de k des chiffres de n.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
foncttion puissance(n,e) Début k<-1 s<-0 ch<-'' Tant que(somme_puissane(n,k)!=n) et (k<4)faire k<-k+1 Fin tant que Si (somme_puissane(n,k)=n) alors Ecrire('puissance k=',k) Finsi Retourner somme_puissane(n,k)=n Fin |
Déclaration des objets
Objet | Type / Nature |
k | entier |
s | entier |
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 |
# fonction qui retourne la puissance n de e def puissance(n,e): exp=1 for i in range (1,e+1) : exp=exp*n return exp # fonction qui retourne la somme de la puissance des chiffres de n def somme_puissane(n,k) : ch=str(n) s=0 for i in range(4) : s=s+puissance(int(ch[i]),k) return s # fonction qui teste si n= la somme de la puissance des chiffres de n def test(n): k=1 s=0 ch='' while(somme_puissane(n,k)!=n) and (k<4): k=k+1 if somme_puissane(n,k)==n : print('puissance k='+str(k)) return somme_puissane(n,k)==n # Parcours des chiffres de 1000 à 9999 for i in range(1000,10000): if test(i): print(str(i)) |
Exécution du programme
a- Ouvrez Qt Designer et créez un nouveau fichier de type Main Window.
b- Ajoutez ces widgets:
QLineEdit
nommé 'a' pour entrer les deux entiers a .
QLineEdit
nommé 'b' pour entrer les deux entiers b .
QLabel
nommé 'msg' pour afficher un message d'erreur.
Un QPushButton
nommé bt_test pour déclencher le module test_puissance.
QLabel
nommé 'liste_entiers' pour afficher la liste des entiers.
Enregistrez le fichier avec l'extension .ui
, par exemple tabtab.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 |
#importation des modules nécessaires from PyQt5.QtWidgets import QApplication from PyQt5 import uic application = QApplication([]) window = uic.loadUi("ex23-interface.ui") # fonction qui retourne la puissance n de e def puissance(n,e): exp=1 for i in range (1,e+1) : exp=exp*n return exp # fonction qui retourne la somme de la puissance des chiffres de n def somme_puissane(n,k) : ch=str(n) s=0 for i in range(4) : s=s+puissance(int(ch[i]),k) return s # fonction qui teste si n= la somme de la puissance des chiffres de n def test(n): k=1 s=0 ch='' while(somme_puissane(n,k)!=n) and (k<4): k=k+1 if somme_puissane(n,k)==n : print('puissance k='+str(k)) return somme_puissane(n,k)==n # Parcours des chiffres entre a et b def test_puissance(): if (window.a.text().isnumeric()) and (window.b.text().isnumeric()): a=int(window.a.text()) # recevoir la valeur du QLineEdit a b=int(window.b.text()) # recevoir la valeur du QLineEdit b if (1000<=a<b<=9999) : liste='' for i in range(a,b): if test(i): liste=liste+str(i)+'\n' window.liste_entiers.setText(liste) else: window.msg.setText('verifier les conditions de saisie a et b') window.liste_entiers.setText('') # si on clique sur le bouton_bt, la fonction somme est exécutée window.bt_test.clicked.connect(test_puissance) 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