Devoir de Contrôle N°2
Prof Fredj Imed
L.S Manzel Ennour Durée 1H
Classe :3ème Sc Info
Trimestre 3
on veut développer une application avec interface graphique qui permet de saisir 10 personnes définis comme
suivants :
TDNT
Type
personne=ENREGISTREMENT
nom : chaine
prénom :chaine
taille :réel ( en mètre )
poids :réel ( en kilogramme )
FIN
Tab= tableau de 10 personne
dans un tableau T de 10 personne en affichant l'IMC et l'interprétation du
statut selon l'OMS de chaque personne saisie (voir interface )
puis sélectionner un statut et afficher les personnes concernées.
Remarque :
• liste des interprétations n'est activée qu'après la saisie des 10
personnes
• dans la liste des interprétations ajouter "tout" pour afficher les 10
personnes
• utiliser toujours deux chiffres après la virgule pour les réels ( utiliser la fonction : round(x,nb_decimal) )
6points
code :
from PyQt5.uic import loadUi
from PyQt5.QtWidgets import QApplication
from numpy import array 4pts
def inter(p): fonction qui calcule
l'interprétation d'une
personne p
return interpretation
1pts
def ajouter():
global ………………………………………………… 3pts
indice=indice+1
fn.nb.setText("NB :"+str(indice))
if indice==10:
fn.ajouter.setEnabled(False)
def quitter(): 1pts
…………………………………………………………………………………………………………………
def actualiser():
global indice
fn.resultat.setPlainText("")
if fn.liste.currentText()=="tout":
for i in range(indice):
ligne=T[i]['nom']+' '+T[i]['prénom']+' '+str(round(T[i]['taille'],2))+' '+str(round(T[i]['poid'],2))
fn.resultat.setPlainText(fn.resultat.toPlainText()+ligne+'\n')
else:
2pts
interpretations=["Dénutrition","Maigreur","corpulance normal","surpoid","Obésité","Obésité sévère","Obésité
morbide","tout"]
indice=0
T=array([{}for i in range(10)])
app=QApplication([])
fn=loadUi("interface.ui")
fn.liste.addItems(interpretations)
fn.ajouter.clicked.connect(…………………………..…..) 3pts
fn.quitter.clicked.connect(…………………….………….)
fn.liste.currentIndexChanged.connect(…………………………………………………)
fn.show()
app.exec_()
bonne chance
Correction
from PyQt5.uic import loadUi
from PyQt5.QtWidgets import QApplication
from numpy import array
def inter(p): def ajouter():
imc=p['poid']/p['taille']**2 global indice
if imc<16.5: T[indice]['nom']=fn.nom.text()
interpretation="Dénutrition" T[indice]['prénom']=fn.prenom.text()
elif imc<=18.5: T[indice]['taille']=float(fn.taille.text())
interpretation="Maigreur" T[indice]['poid']=float(fn.poid.text())
elif imc<=25: imc=T[indice]['poid']/T[indice]['taille']**2
interprétation="corpulance normal" interpretation=inter(T[indice])
elif imc<=30: fn.imc.setText(str(round(imc,2)))
interpretation="surpoid" fn.interpretation.setText(interpretation)
elif imc<=35: indice=indice+1
interprétation="Obésité" fn.nb.setText("NB :"+str(indice))
elif imc<=40: if indice==10:
interpretation="Obésité sévère" fn.ajouter.setEnabled(False)
else:
interpretation="Obésité morbide"
return interpretation
def quitter():
fn.close()
def actualiser():
global indice
fn.resultat.setPlainText("")
if fn.liste.currentText()=="tout":
for i in range(indice):
ligne=T[i]['nom']+' '+T[i]['prénom']+' '+str(round(T[i]['taille'],2))+' '+str(round(T[i]['poid'],2))
fn.resultat.setPlainText(fn.resultat.toPlainText()+ligne+'\n')
else:
for i in range(indice):
if inter(T[i])==fn.liste.currentText():
ligne=T[i]['nom']+' '+T[i]['prénom']+' '+str(round(T[i]['taille'],2))+'
'+str(round(T[i]['poid'],2))
fn.resultat.setPlainText(fn.resultat.toPlainText()+ligne+'\n')
interpretations=["Dénutrition","Maigreur","corpulance normal","surpoid","Obésité","Obésité sévère","Obésité
morbide","tout"]
indice=0
T=array([{}for i in range(10)])
app=QApplication([])
fn=loadUi("interface.ui")
fn.liste.addItems(interpretations)
fn.ajouter.clicked.connect(ajouter)
fn.quitter.clicked.connect(quitter)
fn.liste.currentIndexChanged.connect(actualiser)
fn.show()
app.exec_()