Un nombre heureux est un entier strictement positif, qui, lorsqu’on additionne les carrés de chacun de ses chiffres, puis on additionne les carrés des chiffres de la somme obtenue et ainsi de suite, on obtient un entier à un seul chiffre et est égal à 1.
Exemples : pour l’entier 7 on a :
7²=49
4²+9²=97
9²+7²=130
1²+3²+0=10
1²+0²=1
On a obtenu un entier à un seul chiffre qui est égal à 1 ; donc l’entier 7 est heureux.
Pour l’entier 85 on a :
8²+5²=89
8²+9²=145
1²+4²+5²=42
4²+2²=20
2²+0²=4
On a obtenu un entier à un seul chiffre différent 1 ; donc l’entier 85 n’est pas heureux.
Ecrire un programme Python qui permet de saisir un entier strictement positif et de vérifier et d’afficher s’il est heureux ou non.
1- Saisie et validation de l'entier : Saisir un entier nn et vérifier qu'il est strictement positif.
2- Transformation et vérification :
a) Décomposer l'entier en ses chiffres.
b) Calculer la somme des carrés des chiffres.
c) Répéter le processus avec le résultat obtenu.
d) Si on obtient 1, le nombre est heureux.
e) Si on entre dans une boucle (c'est-à-dire si on retombe sur un nombre déjà vu sans obtenir 1), le nombre n'est pas heureux.
3- Affichage du résultat : Afficher si le nombre est heureux ou non.
Dans cet algorithme, On va utiliser deux fonctions :
Algorithme du programme principal
1 2 3 4 5 6 7 8 9 |
Algorithme entier_distinct Debut n<-saisie() Si verif_heureux(n)alors Ecrire(n,' est un entier heureux') Sinon Ecrire(n,' est un entier non heureux') Fin |
Déclaration des objets
Objet | Type / Nature |
n | entier |
La fonction saisie
Cette fonction saisit un entier n >0.
1 2 3 4 5 6 7 8 9 10 |
fonction saisie() Début Ecrire('donner un entier > 0 ') lire (n) Tant que n<=0 faire Ecrire('donner un entier > 0 ') lire (n) Fin tant que retourner n Fin |
Déclaration des objets
Objet | Type / Nature |
n | entier |
La fonction verif_heureux
Cette fonction vérifie si un entier n est heureux ou non .
1 2 3 4 5 6 7 8 9 10 11 12 13 |
fonction verif_heureux(n) Début v<-n s<-11 Tant que (s>=10) faire ch=Convch(v) s<-0 Pour i de 0 à long(ch) faire v<-Valeur(ch[i]) s<-s+v*v v<-s retourner (s==1) Fin |
Déclaration des objets
Objet | Type / Nature |
i | entier |
v | entier |
s | 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 |
def saisie(): n=int(input('Donner un entier >0: ')) while n<=0 : n=int(input('Donner un entier >0: ')) return n def verif_heureux(n): v=n s=11 while (s>=10): ch=str(v) s=0 for i in range(len(ch)): v=int(ch[i]) s=s+v*v v=s return (s==1) # programme principal n= saisie() if verif_heureux(n): print(str(n)+' est un entier heureux') else: print(str(n)+' est un entier non heureux') |
Exécution du programme
Pour créer une application en Python pour vérifier si n est un entier heureux ou non 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é 'n' pour entrer un entier n .
QPushButton
nommé 'test_heureux_bt' pour exécuter le module heureux_n .
QLabel
nommé 'msg' pour afficher un message d'erreur et le résultat du test heureux d'un entier n > 0 .
Enregistrez le fichier avec l'extension .ui
, par exemple entier-distinct-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 |
from PyQt5.uic import loadUi from PyQt5 import QtCore, QtGui from PyQt5.QtWidgets import * from PyQt5 import QtCore, QtGui, QtWidgets app = QApplication([]) windows = loadUi ("entier-heureux-interface.ui") def heureux_n() : n = int(windows.n.text()) ch = windows.n.text() if n>0 : v=n s=11 while (s>=10): ch=str(v) s=0 for i in range(len(ch)): v=int(ch[i]) s=s+v*v v=s if (s==1): windows.msg.setText(ch+' est un entier heureux') else : windows.msg.setText(ch+' est un entier non heureux') else : windows.msg.setText('Donner n > 0') windows.test_heureux_bt.clicked.connect(heureux_n) 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