Solution Exercice 22 : Nombre de Harshad en Python avec illustration graphique en PyQt5

Exercice 22 || Solution

Dans ce TP graphique PyQt5 on vous demande de réaliser une application graphique via l'outil visuel Qt Designer qui demande à l'utilisateur de saisir un entier n et de tester si ce nombre est de Harshad!
On rappelle qu'un  entier n>0  est de Harshad s'il est divisible par la somme de ses chiffres.
Exemple: n = 120 est divisible par 1+2+0=3 et par suite n=120 est un nombre de Harshad. Par contre  n=25 n'est pas de Harshad puisque 25  n'est pas divisible par 2+5=7. 

nombre entier de harshad en python

  1. Construire l'interface graphique en utilisant Qt Designer tout en respectant les directives suivantes:
    - Le champ de saisie doit être nommé lineEdit_n
    - Le label qui affiche la somme des chiffres de n doit être nommé : lbl_somme_chiffres
    - le label qui affiche le résultat : le nombre n est de harshad ou non doit être nommé: lbl_harchad
    - Le bouton de commande 'Valider' doit être nommé : btn_validate
    - Enregistrez le fichier sous app.ui
    - Créer le fichier python de l'interface graphique app.py à l'aide de la commande : pyuic5
  2. Ecrire une fonction Python nommée somme_digits(n) permettant de calculer la somme des chiffres d'un entier n.
  3. En déduire le code d'une autre fonction nommée est_harshad(n) permettant de tester si un entier n est de Harshad ou non. La fonction doit retourner True si n est de harshad et False dans le cas contraire.
  4.  Créer un fichier python  main.py dans lequel importer le contenu du fichier app.py et y ajouter le code de bouton de commande 'btn_validate' qui réalise l'action.

Solution

1) - Après avoir crée l'application graphique app.ui, on transforme ce dernier en un fichier python à l'aide de la commande:

et dans ce cas on obtient un fichier python nommé app.py dans le même répertoire que celui de app.ui comme le montre la figure suivante:

Nombre de Harshad en Python PyQt5

Questions 2), 3) et 4)

 

 

Younes Derfoufi CRMEF OUJDA

Leave a Reply

Your email address will not be published. Required fields are marked *