Un nombre uniforme est un nombre forme par les mêmes chiffres.
Exemple : 33, 3333, 444, …
On se propose d’écrire un programme Python intitulé « uniforme » permettant de :
1- Saisir un entier N (avec 1<=N<=30). 2- Remplir un tableau T par N entiers positifs formés de deux chiffres minimum.
3- Afficher les nombres uniformes qui se trouvent dans T.( le nombre uniforme est composé d’un même chiffre à 444 est un nombre uniforme)
Exemple : Pour N=8
T :
12 | 7777 | 11123 | 222 | 3425 | 55 | 9989 | 333 |
Le programme affiche : Les nombres uniformes sont :
7777
222
55
333
Pour accomplir cette tâche, nous allons élaborer un algorithme en plusieurs étapes :
1- Saisir un entier n (avec 1≤N≤30).
2- Remplir un tableau T par n entiers positifs formés de deux chiffres minimum (10 à 99 inclus ou plus).
3- Afficher les nombres uniformes qui se trouvent dans T.
Étape 1 : Saisie de l'entier n
Il s'agit simplement de demander à l'utilisateur de saisir un entier n qui respecte les contraintes spécifiées.
Étape 2 : Remplissage du tableau T
Nous devons générer n entiers positifs ayant au moins deux chiffres.
Étape 3 : Vérification des nombres uniformes
Un nombre uniforme est un nombre dont tous les chiffres sont identiques, comme 444 ou 11.
Dans cet algorithme, On va utiliser deux fonctions et deux procédures:
Algorithme du programme principal
1 2 3 4 5 6 7 8 |
Algorithme super Debut n<-saisie() Ecrire('remplissage du tableau t') remplir(t,n) Ecrire('le(s) entiers(s) super(s):') recherche_uniforme(t,n) Fin |
Déclaration des objets
Objet | Type / Nature |
n | entier |
t | tableau de 30 entiers |
La fonction saisie
Cette fonction retourne un entier n entre 1 et 30 saisi par l'utilisateur.
1 2 3 4 5 6 7 8 9 10 |
foncttion saisie_taille() Début Ecrire('donner un entier entre 1 et 30') lire (n) Tant que n<1 ou n>30 faire Ecrire('donner un entier entre 1 et 30') lire (n) Fin tant que retourner n Fin |
Déclaration des objets
Objet | Type / Nature |
n | entier |
La procédure remplir
Cette procédure remplit le tableau t de n entiers.
1 2 3 4 5 6 7 |
Procédure remplir(@t:Tab,n:entier) Début Pour i de 0 à n-1 faire Ecrire('donner elt N°',i,':') lire(t[i]) Fin pour Fin |
Déclaration des objets
Objet | Type / Nature |
i | entier |
La fonction test_uniforme
Cette fonction teste si un entier est uniforme ou non .
1 2 3 4 5 6 7 8 |
Procédure test_uniforme(x:entier) Début ch<-Convch(x) Tant que (ch[0]=ch[1]) et (long(ch)>2) faire ch<-Effacer (ch, 1, 1) # supprimer le premier chiffre Fin tant que retourner (ch[0]=ch[1]) Fin |
Déclaration des objets
Objet | Type / Nature |
x | entier |
ch | chaîne des caractères |
La procédure recherche_uniforme
Cette procédure parcourt le tableau T et affiche les nombres uniformes.
1 2 3 4 5 6 7 8 |
Procédure recherche_uniforme(t,n) Début Pour i de 0 à n-1 faire Si test_uniforme(t[i]) : Ecrire(t[i]) Fin si Fin pour Fin |
Déclaration des objets
Objet | Type / Nature |
i | 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 27 28 29 30 31 32 33 |
from numpy import array t=array([int()]*30) def saisie_taille() : n=int(input("donner un entier entre 1 et 30 ")) while(1>n) or (n>30) : n=int(input("donner un entier entre 1 et 30 ")) return n def remplir(t,n): for i in range (n) : t[i]=int(input("donner elt N°"+str(i)+" >= 10:")) while (t[i]<10) : t[i]=int(input("donner elt N°"+str(i)+" >=10")) def test_uniforme(x) : ch=str(x) while (ch[0]==ch[1]) and (len(ch)>2) : ch=ch[1:len(ch)] # supprimer le premier chiffre return (ch[0]==ch[1]); def recherche_uniforme(t,n): for i in range(n) : if test_uniforme(t[i]) : print(t[i]) n=saisie_taille() print('remplissage du tableau t') remplir(t,n) print('le(s) entiers(s) uniforme(s):') recherche_uniforme(t,n) |
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 pour afficher les nombres uniformes.
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é 'super_bt' pour exécuter le module recherche_uniforme afin d'afficher les nombres uniformes.
QLabel
nommé 'msg' pour afficher un message d'erreur si ch est vide ou contient des valeurs non numériques .
QLabel
nommé 'tablabel' pour afficher les éléments du tableau.
QLabel
nommé 'liste_uniforme' pour afficher les éléments uniformes du tableau.
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 81 82 |
from PyQt5.uic import loadUi from PyQt5 import QtCore, QtGui from PyQt5.QtWidgets import * from PyQt5 import QtCore, QtGui, QtWidgets app = QApplication([]) windows = loadUi ("tabtab.ui") def clearTab(): # Fonction qui efface le tableau windows.t.setDisabled(1) windows.t.clearContents() windows.t.setRowCount(0) windows.t.setColumnCount(0) def createTab(): # Fonction qui construit le table de taille n editors = [] n = windows.n.text() if n=="": clearTab() windows.msg.setText("Veuillez saisir un nombre >0") elif n.isnumeric() and int(n)>0: windows.msg.clear() # effacer le message d erreur n=int(n) #constructuion du tableau windows.t.setDisabled(0) windows.t.setRowCount(1) windows.t.setColumnCount(n) # resize taille colonnes windows.t.resizeColumnsToContents() for i in range(n): # ajouter t[1] , t[2] ,... windows.t.setColumnWidth(i,60) editors.append('t['+str(i)+']') windows.t.setItem(0,i,QTableWidgetItem("0")) brush = QtGui.QBrush(QtGui.QColor(35+(i%2)*80, 20+(i%2)*80, 50+(i%2)*80)) # colorer le background des elements du tableau windows.t.item(0,i).setBackground(brush) # ajouter police aux elements du tableau brush1 = QtGui.QBrush(QtGui.QColor(255, 255, 255)) font = QtGui.QFont() font.setPointSize(12) font.setBold(True) font.setWeight(75) windows.t.item(0,i).setForeground(brush1) windows.t.item(0,i).setFont(font) # ajouter police a entete du tableau t[i] item = QtWidgets.QTableWidgetItem() item.setFont(font) item.setForeground(brush) windows.t.setHorizontalHeaderItem(i, item) # renommer les entetes du tableau t[1], t[2] , ... windows.t.setHorizontalHeaderLabels(editors) else: windows.msg.setText("Veuillez saisir un nombre >0") clearTab() def test_uniforme(x) : ch=str(x) while (ch[0]==ch[1]) and (len(ch)>2) : ch=ch[1:len(ch)] # supprimer le premier chiffre return (ch[0]==ch[1]); def recherche_uniforme(): liste='' n = int(windows.n.text()) for i in range(n) : if test_uniforme(int(windows.t.item(0, i).text())) : liste=liste+windows.t.item(0, i).text()+' ' windows.liste_uniforme.setText(liste) windows.valider_bt.clicked.connect ( createTab ) windows.uniforme_bt.clicked.connect ( recherche_uniforme) 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