La marque ‘ECOLO’, décide de faire des statistiques à propos de la consommation de ses produits par les clients d’un espace commercial.
On suppose que le nom d’un produit relatif à une marque donnée contient obligatoirement le nom de cette marque.
Pour cela, on donne :
- Nbp représente le nombre de produits achetés de la marque ‘ECOLO’,
- Nomp le nom d’un produit qui doit être une chaine alphabétique pouvant contenir des espaces et de longueur maximale 20 caractères.
On se propose de créer un programme Python qui, pour un client donné ayant acheté N produits (N ϵ [5,100]), permet de:
1- déterminer et afficher le nombre de produits distincts de la marque ‘ECOLO’ parmi les N produits achetés par un même client.
2- afficher un message d’invitation à la consommation des produits de la marque ‘ECOLO’ au client n’ayant acheté aucun produit de cette marque.
3- afficher un message de remerciement au client ayant acheté au moins un produit de la marque avec, en plus, un message d’invitation à devenir ambassadeur de la marque, si le client achète plus de 5 produits distincts de cette marque.
Dans cet algorithme, On va utiliser trois fonctions:
Algorithme du programme Principal
1 2 3 4 5 |
Algorithme produits_ECOLO Debut n<-saisie_nombre_produits() saisie_noms_produit(n) Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
n | entier |
La fonction saisie_nombre_produits
Cette fonction saisit le nombre des produits achetés par le client..
1 2 3 4 5 6 7 8 9 10 |
fonction saisie_nombre_produits():entier Début Ecrire('donner le nombre de produits achetés entre 5 et 100: ') Lire(n) Tant que (n<5) ou (n>100) faire Ecrire('donner le nombre de produits achetés entre 5 et 100: ') Lire(n) Fin tant que retourner n Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
n | entier |
La fonction verif_chaine
Cette fonction vérifie si le nom du produit est une chaine alphabétique pouvant contenir des espaces et de longueur maximale 20 caractères
1 2 3 4 5 6 7 8 9 10 11 |
fonction verif_chaine(ch:chaine):booleen Début Si 1<long(ch)<=20 alors i<-0 Tant que (i<long(ch)-1) et ('A'<=Majus(ch[i])<='Z') faire i<-i+1 Fin tant que retourner ('A'<=Majus(ch[i])<='Z') Sinon retourner Faux Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
i | entier |
La procédure saisie_noms_produit
Cette procédure permet de :
1- saisir les noms des produits
2- compter le nombre des produits ayant la marque ECOLO
3- afficher le nombre de produits distincts de la marque ‘ECOLO’ parmi les N produits achetés par un même client
4- afficher un message de remerciement au client ayant acheté au moins un produit de la marque avec, en plus, un message d’invitation à devenir ambassadeur de la marque, si le client achète plus de 5 produits distincts de cette marque.
5- afficher un message d’invitation à la consommation des produits de la marque ‘ECOLO’ au client n’ayant acheté aucun produit de cette marque.
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 |
Procédure saisie_noms_produit(n:entier) Début liste_produits<-'' nbp<-0 Pour i de i de 0 à n-1 faire Ecrire("donner le nom du produit N°"+i+": ") Lire(nomp) Tant que verif_chaine=Faux faire Ecrire("donner le nom du produit N°"+str(i)+": ") Lire(nomp) Fin tant que Si Pos(nomp,'ECOLO')>=0 et Pos(liste_produits,nomp)<0 alors nbp<-nbp+1 liste_produits<-liste_produits+nomp Fin si Fin pour Si 1<=nbp<=5 alors Ecrire("Merci pour l'achat de "+ nbp +" produit(s) de la marque ECOLO") Sinon si nbp>5 alors Ecrire("Je vous invite de devenir ambassadeur de la marque") Sinon Ecrire("Veuillez consommer nos produits ECOLO") Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
i | entier |
liste_produits | chaîne des caractères |
nbp | entier |
nomp | 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 35 36 37 38 |
def saisie_nombre_produits(): n=int(input("donner le nombre de produits achetés: ")) while (n<5) or (n>100): n=int(input("donner le nombre de produits achetés: ")) return n def verif_chaine(ch): if 1<len(ch)<=20: i=0 while(i<len(ch)-1) and ('A'<=ch[i].upper()<='Z'): i=i+1 return ('A'<=ch[i].upper()<='Z') else: return False def saisie_noms_produit(n): liste_produits='' nbp=0 for i in range(n): nomp=input("donner le nom du produit N°"+str(i)+": ") while verif_chaine==False: nomp=input("donner le nom du produit N°"+str(i)+": ") if nomp.find('ECOLO')>=0 and liste_produits.find(nomp)<0: nbp=nbp+1 liste_produits=liste_produits+nomp if 1<=nbp<=5: print("Merci pour l'achat de "+ str(nbp) +" produit(s) de la marque ECOLO") elif nbp>5: print("Je vous invite de devenir ambassadeur de la marque") else: print("Veuillez consommer nos produits ECOLO") #programme principal n=saisie_nombre_produits() saisie_noms_produit(n) |
Pour créer une application en Python et Designer QT qui fait des statistiques à propos de la consommation des produits 'ECOLO', on va suivre ces étapes:
a- Ouvrez Qt Designer et créez un nouveau fichier de type Main Window.
b- Ajoutez ces widgets:
QLineEdit
nommé 'code' pour entrer les noms des produits
QLabel
nommé 'msg' pour afficher des messages d'erreur et les statitstiques
QPushButton
nommé 'bt_rechercher' pour recherche le nombre des produits de la marque ECOLO
Enregistrez le fichier avec l'extension .ui
, par exemple control_billet-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 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 |
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-2.ui") # Fonction qui supprime des espaces de la chaine des carcatères def supprimer_espaces (ch) : while(ch[0]==' '): # elimnier tous les espaces au début de la chaine ch=ch[1:len(ch)] while(ch[len(ch)-1]==' '): # elimnier tous les espaces a la fin de la chaine ch=ch[0:len(ch)-1] while (ch.find(' ')>0): ch=ch.replace(" ", " ") # remplacer les doubles espaces apar un seul espace return ch # Procedure qui saisit les noms des produits def saisie_noms_produit(): windows.msg.clear() ch = windows.ch.text() verif_majus=True if ch=="": windows.msg.setText("Veuillez remplir la chaîne") else: windows.msg.clear() # effacer le message d erreur ch= supprimer_espaces(ch) i=0 j=0 ch1='' nbp=0 # pour compter le nombre des produits comportant le nom ECOLO test_max_caracteres=True liste_produits=' ' # parcourir les caracteres de la chaine CH1 while(i<len(ch)-1) and (('A'<=ch[i].upper()<='Z') or (ch[i]==' ')) and (test_max_caracteres) : if ('A'<=ch[i].upper()<='Z'): ch1=ch1+ch[i] if ((ch[i]==' ') or (i==len(ch)-1)) : if len(ch1)<1 or len(ch1)>20: test_max_caracteres=False if ch1.find('ECOLO')>=0 and liste_produits.find(ch1)<0: nbp=nbp+1 liste_produits=liste_produits+ch1 ch1='' j=j+1 i=i+1 if ch1.find('ECOLO')>=0 and liste_produits.find(ch1)<0: nbp=nbp+1 if (i==len(ch)-1) and ('A'<=ch[i].upper()<='Z') and (test_max_caracteres) : if 5<=j+1<=100: if 1<=nbp<=5: windows.msg.setText("Merci pour l'achat de "+ str(nbp) +" produit(s) de la marque ECOLO") elif nbp>5: windows.msg.setText("Je vous invite de devenir ambassadeur de la marque") else: windows.msg.setText(" Veuillez consommer nos produits ECOLO") else: windows.msg.setText("le nombre des produits doit etre 5 et 100") else: windows.msg.setText("les noms doit etre forme des lettres et de longueur 20 au maximum: ") windows.rechercher_bt.clicked.connect ( saisie_noms_produit ) windows.show() app.exec_() |
Exécution du programme
1- Afficher le nombre de produits distincts de la marque ‘ECOLO’
2- Afficher un message de remerciement au client ayant acheté au moins un produit de la marque avec, en plus, un message d’invitation à devenir ambassadeur de la marque, si le client achète plus de 5 produits distincts de cette marque.
3- Afficher un message d’invitation à la consommation des produits de la marque ‘ECOLO’ au client n’ayant acheté aucun produit de cette marque.
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