IAT
Niveau Licence 1 GL Module : Python Enseignant : ALMOU
Installation de package selon la version de python déjà installée
Sous Linux
python2 -m pip install Package # default Python 2
python2.7 -m pip install Package # specifically Python 2.7
python3 -m pip install Package # default Python 3
python3.4 -m pip install Package # specifically Python 3.4
sous Windows
py -2 -m pip install Package # default Python 2
py -2.7 -m pip install Package # specifically Python 2.7
py -3 -m pip install Package # default Python 3
py -3.4 -m pip install Package # specifically Python 3.4
Remarque:
Pour certains packages scientifiques, consulter:
https://packaging.python.org/en/latest/science/
Présentation de python
Python est un langage interprété. Chaque ligne lue est exécutée sans avoir besoin d’un compilateur. Il est un langage
modulaire. L’un des 3 premiers langages de programmation. Utilisé dans divers domaines tels que :
- La météo, la cartographie
- Les réseaux informatique/ télécoms {Admiration, sécurité, audit, hacking}
- administration des bases de données {Oracle, MySQl, PostgreSQL, MongoDB, SQL Server, Cassandra, …}
- Analyse et visualisation de donnees, Machine learning, ….
Téléchargement : www.python.org/downloads
docs.python.org
Les IDE python :
- IDLE
- Pycharm
- wing IDE Personal
- Sublime text3
- Atom
Installation de python sous Linux : sudo apt-get install python3
Installation de pip : sudo apt-get install python3-pip
Importation du module
from unModule import uneFonction[, uneAutreFonction,…] Importer une ou plusieurs fonctions
from unModule import * Importer toutes les fonctions
Import module Importer le module en entier
from unModule import uneFonction as fc Alias d’une fonction importée
Sous linux il faut préciser le chemin ou se trouve python, même chose que le bash
# !/usr/bin/en python
print('Presentez vous s\'il vous plait')
nom=input('Quel est votre nom ? ')
langage=input('Quel est votre langage de programmation prefere ? ')
if langage=='Python':
print('Bienvenue dans la famille')
else:
print(nom, 'qu\'est-ce que vous attendez ?. Rejoignez la famille Python')
Formatage :
age=25
nom='Ousmane'
prenom='Hadi'
print('{} {} a {} ans '.format(nom,prenom,age))
print(nom, prenom, 'a' , age, 'ans')
print(f'{nom} {prenom} a{age} ans')
Long text
exemple :
print("je suis nigerien , je suis etudiant \
a l'Ecole Superieure des Telecommunication ")
Erreur Correction
print(‘c:\niger\niamey’) print(‘c:\\niger\\niamey’)
print(‘je m’en vais’) print(‘je m\’en vais’)
Exécution d’un script python (sous Linux)
a. Rendre le fichier exécutable : chmod u+x fichier.py
b. Exécution : python fichier.py ou ./ fichier.py
# Commenter une ligne
‘’’ Commenter un paragraphe ‘’’
Les mots réservés
And del from None lambda
As elif global Nonlocal with
Assert else if Not yield
Break except import Or
Class False in Pass
Continue finally is Try
Def for True While
Quelques fonctions mathématiques
abs(number) Retourne la valeur absolue d’un nombre
cmath.sqrt(number) Retourne la racine d’un nombre négatif
float(object) Convertit un nombre ou une chaine de caractères en nombre flottant
input(prompt) Demande à l’utilisateur d’entrer une valeur
int(object) Convertit un nombre en entier
long(object) Convertit un nombre en entier long
str(object) Convertit une valeur en chaine de caractères
round(number[, ndigits]) Arrondir un nombre a n chiffres après la virgule
math.sqrt(number) Retourne la racine carrée d’un nombre positif
Les opérateurs arithmétiques : +, -, *, /, %, **, //
Exemple :
print("5+2=",5+2)
print("5-2=",5-2)
print("5*2=",5*2)
print("5/2=",5/2)
print("5**2=",5**2)
print("5//2=",5//2)
print("1+2-3*2="1+2-3*2)
print("(1+2-3)*2="(1+2-3)*2)
print('\n'*3)
print((2+3j)*(1-5j)/2j)
Appel du module __future__ qui contient la fonction division
from __future__ import division
>>> 5/8
Affectation
x=2 x=y=z=14 nom=input(‘Entrer le nom’) e=’PATRIOTISME’
print(‘Votre nom est %s’ %) *x,z=e
x+=z x,y,z = 5,17,25 e=’PATRIOTISME’
x,*y=e
x*=5 x/=2 e=’PATRIOTISME’
x,*y,z=e
print('%s %s %s' % ('Je pense','donc','je suis'))
print('Ecole ',end='EST')
les opérateurs de comparaison
== égal à
!= différent de
> supérieur à
>= supérieur ou égal à
< inférieur à
<= inférieur ou égal à
Concaténation
nom="Moussa"
prenom="Dan Ladi"
print(nom+" "+prenom)
recherche d’une chaine de caractères
presention="EST, Ecole Superieure des Telecommunications, situee a Niamey face ENAM"
presentation.find('EST')
Liste : ensemble d’éléments séparés par des virgules, compris entre crochets
linux=['debian','ubuntu','redhat','centos']
print("premiere distrition est", linux[0])
print("deuxieme distrition est", linux[1])
Modifier le contenu d’une variable
linux[0]="Slax"
print("premiere distrition est",linux[0])
Format de liste : tableau [0-Nn-1]
print(linux[2 :]) #affiche les éléments de la liste à partir du 3e jusqu’au denier
print(linux[2 :]*2) #afficher le résultat 2 fois
Liste des listes
Indicer de liste
Soit la liste :
mot= [‘Fraternite ‘Travai ‘Progre ‘Libert ‘Justice ‘Honneur
’, l’, s’, e’, ’, ’]
Indice positif 0 1 2 3 4 5
Indice négatif -6 -5 -4 -3 -2 -1
mot[-1] mot[ :-1] mot[ -4:-1] mot[2 :] mot[0 :3] mot[0]+ mot[-1] mot[0]*5
Produit=['mil','mais','sorgho','riz','patate','manioc']
print(Produit[-1])
print(Produit[ :])
print(Produit[ :-1])
print(Produit[2 :4])
prix=[450,375,300,22550,125,200]
Quantite=[5,5,2,3,14,6]
print('le montant total de',produit[0],prix[0]*quantite[5])
tout=[[produit],[prix]]
print(tout[0],tout[1])
Exercice 1
Soit la liste : nbre = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Avant de le vérifier a l’aide de python, donner le résultat mentalement
nbre [3:6] nbre [7:10] nbre [3:0] nbre[3:6:3]
nbre [0:1] nbre [-3:-1] nbre [:] nbre[::4]
nbre [-3:0] nbre [-3:0] nbre[0:10:1]*2 [8:3:-1]
[0:10:-2] [::-2] [5::-2] [1:5:-2]
Quelques fonctions prédéfinies
sep=’/’ d/e/m/o/c/r/a/t/i/e
rep=’democratie’
j=sep.join(rep)
o=j.split(‘/’) Renvoie la liste sans le séparateur
o.lower Formate les éléments de la liste en minuscule
Exemple :
eleve=['ali','sani','issa','mairo','hadi'] eleve=['Ali','Sani','Issa','Mairo','Hadi']
trouve=input('Entre un nom ') trouve=input('Entre un nom ')
if trouve.lower() in eleve : if trouve.capwords() in eleve :
print('Alors trouve') print('Alors trouve')
else : else:
print('Pas trouve') print('Pas trouve')
Formatage du texte
nom= input("Quel est votre nom? ")
veux = input("Quel est votre meilleur voeux pour le Niger? ")
print("{} souhaite {} pour le Niger").format(nom,veux)
Ordre d’affichage des variables (avec 0 pour la variable à afficher en premier, 1 pour la variable à afficher en
second,..
nom= input("Quel est votre nom? ")
veux = input("Quel est votre meilleur voeux pour le Niger? ")
print("{0} souhaite {1} pour le Niger").format(nom,veux)
Manipulation de chaine de caractères
Vérifier les fonctions liées à string : dir(string)
regle1=’ Dans une Entreprise, l\’informaticien est le premier a venir et est le dernier a partir ’
regle1.strip()
regle1.replace(‘Entreprise’,’Organisation’)
regle1.capwords()
Liste d’un nombre :
soit le numéro de téléphone : tel=20123456
Incorrect Correcte
lister=list(tel) lister=list(str(tel))
Longueur=len(tel) Longueur=len(str(tel))
Structure de données
list.clear() list.append(x) list.insert(i, x) list.remove(x) list.clear() list.pop([i]) list.index(x[, start[, end]])
list.count(x) list.sort(key=None, reverse=False) list.reverse()
list.popleft() del list[n]
list(‘Afrique’)
Ajout d’un élément en tête de liste
L=[]
produit.append('oignon')
produit.append(0,'Riz')
print(produit)
Ajouter un élément à la position k de la liste
produit.insert(1,'tomate')
Supprimer un élément de la liste
produit.remove('riz’)
Renverser l’ordre du contenu de la liste : le premier élément devient le dernier
produit.reverse()
Supprimer le dernier élément de la liste
produit.pop()
Supprimer un élément de la liste à la position k
del produit[1]
print(produit)
Concaténer les contenus de deux listes
produit1=['mil','mais','sorgho']
produit2=['riz','patate','manioc']
produit=produit1+produit2
toutProduit=[produit1,produit2]
print(toutProduit[][])
print(toutProduit[1][1])
Exemple 1:créer une liste a partir d’une boucle
carre = []
for x in range(10):
carre.append(x**2)
Exemple 2:
carre = [x**2 for x in range(10)]
Exemple 3 :
[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
Exercice
Soit d = [-4, -2, 0, 2, 4]
1. Créer une liste avec des valeurs doubles de d
2. Exclure des valeurs négatives dans d
3. Utiliser une fonction aux valeurs de d
4. Donner une liste qui contient le tuple carre des valeurs de d
Exercice :
Soit la matrice
A= [[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12] ]
1. Donner la transposée de A
Solution 1:
H=[
[row[i] for row in A]
for i in range(4)]
print(H)
Solution 2
A=[]
for i in range(4):
A.append([row[i] for row in A])
Déterminer la valeur maximale
print(max(prix)) #affiche le prix maximal
print(min(prix)) #affiche le prix minimal
Le nombre d’éléments de la liste
print(len(prix))
Exercice 1
Soit rep= ‘decolonisation’
1 col=list(rep) 6 d[0],d[2],d[4], d[5],d[6] =’d’,’ m’,’c’,’r’, ’t’
2 del col[0 :2] 7 print(d)
3 re=list(‘re’) 8 d.insert(6,’a’)
4 rec=re+col 9 print(d)
print(rec)
5 d=rec 10 d[9 :]=’e’
Exercice 2
Soit d=’democratisation’
1 dl=list(d) 9 k.index(‘e’)
2 dl.count(‘i’) 10 k.pop()
3 dl.count(‘i’) 11 k.pop(0)
4 s=d[ :4] 12 k.remove(‘m’)
5 t=d+s 13 m=k
6 t.count(‘d’) 14 m.sort()
7 l=list(‘anti’) 15 y=sorted(k)
8 k.extend(d)
pop() supprime par défaut le dernier élément de la liste.
remove() supprimer la première occurrence de l’élément trouvé dans la liste
Les tuples : ensemble d’éléments compris entre parenthèses
() Tuple vide
t=tuple(‘REPUBLIQUE’) Retourne la chaine de caractères en tuple
t[2 :4]
list(t) Convertit le tuple t en liste
Produit=(‘Tomate’,’Riz’,’Arome’)
Dictionnaire : c’est comme un tableau
Pourquoi le dictionnaie ?
Soit eleve=[‘Ali’,’Iro’,’Ami’,’Hadi’]
telephone=[20586313,20659874,21561202,20265981]
Chercher le numéro de Ami : telephone[eleve.index(‘Ami’)]
Sous forme de dictionnaire :
eleve=[‘Ali’ : 20586313,’Iro’: 20659874,’Ami’: 21561202,’Hadi’: 20265981]
fourniture={'cahier':'200','crayon':'couteur','gomme' :'100','livre' :'Afrique mon
Afrique'}
etudiant={'nom':'ali','prenom':'sani','adresse' :'Lamorde','genre' :'H'}
print(fourniture)
print(fourniture['cahier'])
del (fourniture['gomme'])
fourniture ['livre']='Histoire du Niger']
print(len(fourniture))
print(fourniture.keys())
print(fourniture.values())
Afficher une colonne d’enregistrement
print(etudiant['nom'])
Supprimer un champ de la liste
del etudiant['nom']
print(etudiant.get('prenom'))
print(etudiant.keys()) # afficher les champs
Les fonctions liées au dictionnaire
etudiant=[(‘Nom’,’Ali’),(‘bourse’,65000)] d=dict(Nom=’Ali’,bourse=65000)
d=dict(etudiant)
print(d)
eleve={ d={}
'ali':{ d[‘nom']='Ali'
'tel':22, d[‘bourse']=35200
'adress':'yantala' print(d)
}, d.clear() Supprime le contenu du dictionnaire d
'sani':{'tel':23,'adress':' boutique={
Liberte' 'nom':'Gogormaya','contact':{'Yantala':22222
} } 200,'Haro banda':22222201}
print(eleve) }
print(boutique)
boutique={ Sauver=boutique.copy() Copier le dictionnaire boutique dans
sauver
x={}.fromkeys(boutique)
'nom':'Gogormaya','tel':[22222200,22222201] Créer un nouveau dictionnaire
dict.fromkeys([‘nom’,’tel’]) sans les valeurs
}
print(boutique)
On peut assigner une valeur au lieu de None dict.fromkeys([‘nom’,’tel’],(‘vide’))
vacataire={‘nom’ :’Ali’,’nbreHeure’ :60
,’module’ :’Linux’,’classe’ :’L1’}
libelle,valeur = vacataire.popitem()
print(key)
print(valeur)
Etudiant={‘nom’ :’Ali’,’prenom’ :’Sani’,’bourse’ :’oui’}
etudiant.pop(‘nom’) Supprime l’item nom
etudiant.popitem() Supprime arbitrairement l’item du dictionnaire
stagiaire={} Assigner une valeur par défaut a un item du dictionnaire
stagiaire.setdefault(‘profile’,100)
print(stagiaire)
vac={‘vacataire’ :’Alou’} update() met à jour le dictionnaire à partir du contenu d’un autre
stagiare.update(di)
Values
region={} values() retourne les valeurs du dictionnaire
region[1]='Agadez'
region[2]=' Diffa'
region[3]=' Dosso'
r=region.values()
print(r)
Les structures de contrôle
if (condition1) : age= int(input('Entrez votre age'))
instruction1 if age>=6)and age<11:
elif(condition2) : print('Vous etes au primaire')
instruction2
elif age>=11 and age<15:
else :
instruction3 print('Vous etes au colege')
else:
print('Vous devrez etre a l\'Universite')
ecole=input('Entrez votre ecole:EST,EPN,UAM')
if ecole=='EST':
print('Soyez les bienvenue au MASTER 2 GL. Vous etes
pythonien')
else:
print('Desole, vous n\'allez pas suivre le cours de python')
electeur={'id':22,'Nom':'Ali','age':25,'nationalite':'nigerienne'}
electeur1={'id':20,'Nom':'Aliou','age':17,'nationalite':'nigerienne'}
print(electeur,"\n",electeur1)
if (electeur.get('nationalite')=='nigerienne' and (electeur.get('age')>=18)):
print("vous pouvez voter")
else:
print("Vous ne pouvez pas voter. DESOLE")
import math as m import math as m
a,b,c=2,4,6 a=float(input("Entrer la valeur de a: "))
dt=b**2-4*a*c b= float (input("Entrer la valeur de b: "))
c= float (input("Entrer la valeur de c: "))
if dt>0: dt=b**2-4*a*c
x1=-b-m.sqrt(dt) if dt>0:
x2=-b+m.sqrt(dt) x1=-b-m.sqrt(dt)
print("racine1 %s" % x1,"\n") x2=-b+m.sqrt(dt)
print("racine2 %s" % x2,"\n") print("racine1 %s" % x1,"\n")
elif dt==0: print("racine2 %s" % x2,"\n")
x1=x2=-b/2*a elif dt==0:
print("Racine double x1==x2: ",x1) x1=x2=-b/2*a
else: print("Racine double x1==x2: ",x1)
print("Pas de solution") else:
print("Pas de solution")
eleve=['Ali','Sani','Iro','Hadi']
donnee=input('Nom')
if donnee:
print('ok')
else:
print('non’)
Pour les nombres complexes, importer le module cmath
Reoudre (1+3j) * (9+4j)
Resoudre (1+3j) / (9+4j)
WHILE
i=0 On peut également utiliser un else pour faire les
while(i<8): instructions qui ne remplissent pas les conditions du while.
print(‘tour numero’,i) i=9
i+=1 while(i<8):
print('tour',i)
i+=1
else:
print('hors condition!')
FOR
for i in [1,2,3]: condiment=['Huile','Tomate','Oignon','S
print(i) el']
for c in condiment:
print(c)
break ou continue for n in range(2,25,3):
i=1 print(n)
while(i<8):
print('tour',i) = ['Ali', 'Adi', 'Kaka', 'Sani',
i+=1 'Labo']
if(i==5): for i in range(len(a)):
break print(i, a[i])
else:
print('hors sujet!')
ecole=[['UAM','UM','UZ','UT'],['EST','EPN',
'EMIG']]
for u in range(0,1) :
for e in range(0,1) :
print (ecole[u][e]):
for n in range(2, 10): for num in range(2, 10):
for x in range(2, n): if num % 2 == 0:
if n % x == 0: print(num,"est premier")
print(n, 'equale', x, '*', n//x) continue
break print(num,'est un nombre premier ')
else:
print(n,'est un nombre premier ')
def fib(n): def fib2(n):
L=[] 'Donne la suite de Fibonacci de n'
a, b = 0, 1 result = []
while a < n: a, b = 0, 1
a, b = b, a+b while a < n:
L.append(a) result.append(a)
Return L a, b = b, a+b
print(fib(10)) return result
def fib3(n,a=0,b=1,L=[]):
while a < n:
a, b = b, a+b
L.append(a)
Return L
print(fib3(10))
a) [x*x for x in range(10)]
b) [(x, y) for x in range(3) for y in range(3)]
c) eval(raw_input("Enter an arithmetic expression: "))
d) c = {}
c['x'] = 2
c['y'] = 3
eval('x * y', c)
les fonctions
chr(n)
eval(source[, globals[, locals]])
enumerate(seq)
range([start,] stop[, step])
reversed(seq)
i=5
def f(arg=i):
print(arg)
i=6
f()
Le fichier
Script python Contenu du fichier f.txt
Ecriture dans un fichier
Exercice d’application 1
Exercice
import sqlite3
conn=sqlite3.connect('C:/sqliteDB/master2EST.db')
c=conn.cursor()
c.execute("CREATE TABLE etudiant(ide integer primary key autoincrement,nom varchar(50) not
null)")’’’
c.execute("INSERT INTO etudiant(nom) VALUES('Ali')")
c.execute("INSERT INTO etudiant VALUES(2,'Moussa')")
c.execute("INSERT INTO etudiant VALUES(3,'Sani')")
conn.commit()
li=c.execute("SELECT * FROM etudiant")
for tab in li:
print(tab[0])
print(tab[1])
print(tab[2])
Exercice d’application 2
Exercice d’application 3 : Objectif : écrire un programme qui copie certaines données d’un fichier vers un autre
Module zlib
zlib permet de compresser ou décompresser un document comme zip ou gunzip
syntaxe : gzip.GzipFile([filename[, mode[, compresslevel[, fileobj]]]])
Les différents modes : 'r', 'rb', 'a', 'ab', 'w', or 'wb'
Nb : le mode par défaut est rb
Le niveau de compression : [1,9]
Niveau
1 Plus rapide mais la compression n’est pas efficace
9 Très bonne compression mais lent
Exemple 1 : lire le contenu d’un fichier compresser
Exemple2 : Créer un fichier compressé
Exemple 3 : Compresser un fichier
Exemple avec pymysql:
Exercice
import pymysql as m
cn=m.connect(host='localhost',user='root',password='',db='pharmacie')
cr=cn.cursor()
def menu():
while(1):
print('Choisissez une operation: ')
op=int(input('1:Afficher, 2: Inserer, 3: Modifier, 4: Rechercher, 5: Supprimer'))
if op==1:
afficher()
elif op==2:
inserer()
elif op==3:
modifier()
elif op==4:
rechercher()
elif op==5:
supprimer()
else:
print('Choix invalide')
def afficher():
try:
cr.execute('SELECT * FROM produit ORDER BY id DESC')
da=cr.fetchall()
for d in da:
print(d)
except:
print('Aucun produit')
def inserer():
produit=str(input('Entrer le nom du produit'))
prix=int(input('Entrer le prix du produit'))
quantite=int(input('Entrer la quantite du produit'))
marque=str(input('Entrer la marque du produit'))
try:
cr.execute('''INSERT INTO produit(produit,prix,quantite,marque)
VALUES(%s,%s,%s,%s)''',(produit,prix,quantite,marque))
cn.commit()
print('Insertion effectuee avec success')
except Exception as e:
print('Insertion a echoue :',e)
cn.rollback()
finally:
afficher()
def modifier():
idp=input('Saisissez le numero du produit a Modifier')
produit=str(input('Entrer le nom du produit'))
prix=int(input('Entrer le prix du produit'))
quantite=int(input('Entrer la quantite du produit'))
marque=str(input('Entrer la marque du produit'))
try:
cr.execute('''UPDATE produit SET produit=%s,prix=%s,quantite=%s,marque=%s
WHERE id=%s''',(produit,prix,quantite,marque,idp))
cn.commit()
print('Modification effectuee avec success')
except:
print('Modification a echoue')
cn.rollback()
finally:
afficher()
def rechercher():
produit=input('Entrer le nom du produit que vous cherchez')
try:
cr.execute("SELECT * FROM produit WHERE produit=%s",produit)
da=cr.fetchone()
for d in da:
print(d)
except:
print('Pas de resultat pour votre recherche')
def supprimer():
idp=input('Entrer le numero du produit a supprimer')
try:
cr.execute('DELETE FROM produit WHERE id=%s',idp)
cn.commit()
print('Suppression effectuee avec success')
except Exception as e:
print('Operation de suppression a echoue',e)
cn.rollback()
finally:
afficher()
if __name__ == '__main__':
menu()
TD 1 :
Exercice 1 : gestion de resultats du Bac
voir le fichier joint qui contient la base de données(format json)
Questionnaire
1)lister les candidats de la série D
Utilisation du module tabulate
2)lister les candidates de la serie C
3) donner la somme des coefficients et le nombre de matieres composees en serie C
from bac import r
def somCoeffNbrMat(s):
i=0
Som=0
for x in r:
if x['serie'] == s:
for y in x['note']:
i+=1
Som+=y['coef']
break
return s,i,Som
for s in ['A','C','D','E']:
print(somCoeffNbrMat(s))
4) donner le nombre de candidats par série
#4) donner le nombre de candidats par serie
from bac import r
def nbrCandSerie(s):
i=0
for x in r:
if x['serie'] == s:
i+=1
return s,i
for s in ['A','C','D','E']:
print(nbrCandSerie(s))
5)donner le nombre de candidates par serie
#4) donner le nombre de candidats par serie
from bac import r
def nbrCandSerie(s):
i=0
for x in r:
if x['serie'] == s and x['genre'] =='F':
i+=1
return s,i
for s in ['A','C','D','E']:
print(nbrCandSerie(s))
6) donner le pourcentage des candidates de la serie D
#4) donner le nombre de candidats par serie
from bac import r
def PrCandSerie(s):
i=j=0
for x in r:
i+=1
if x['serie'] == s:
j+=1
if i:
return s,round(j*100/i,2)
for s in ['A','C','D','E']:
print(PrCandSerie(s))
7) donner le pourcentage des candidates par serie
#4) donner le nombre de candidats par serie
from bac import r
def PrCandSerie(s):
i=j=0
for x in r:
if x['genre'] == 'F':
i+=1
if x['serie'] == s:
j+=1
if i:
return s,round(j*100/i,2)
for s in ['A','C','D','E']:
print(PrCandSerie(s))
8) donner la serie ou il ya plus de candidats
from bac import r
def nbrCandSerie(s):
i=0
for x in r:
if x['serie'] == s:
i+=1
return s,i
def trouveMax():
L=[]
for s in ['A','C','D','E']:
L.append(nbrCandSerie(s))
v=[]
for y in L:
v.append(y[1])
mx=max(v)
for x in L:
if x[1]==mx:
return x
print(trouveMax())
9) donner les deux premieres series ou il ya plus de candidats
from bac import r
def nbrCandSerie(s):
i=0
for x in r:
if x['serie'] == s:
i+=1
return s,i
def trouveMax():
L=[]
for s in ['A','C','D','E']:
L.append(nbrCandSerie(s))
v=[]
for y in L:
v.append(y[1])
v.sort()
deux=v[-2:]
W=[]
for d in deux:
for x in L:
if x[1]==d:
W.append(x)
return W
print(trouveMax())
10) donner la série ou il y a moins de candidates
from bac import r
def nbrCandSerie(s):
i=0
for x in r:
if x['serie'] == s:
i+=1
return s,i
def trouveMin():
L=[]
for s in ['A','C','D']:
L.append(nbrCandSerie(s))
v=[]
for y in L:
v.append(y[1])
v.sort()
m=v[0]
for x in L:
if x[1]==m:
return x
print(trouveMin())
11) donner la liste des candidats de la serie D qui ont des notes inferieures a 10 en mathématique
from bac import r
def mpInf10(s):
i=0
for x in r:
if x['serie'] == s:
for y in x['note']:
if y['m'] =='Math' and y['n']<10:
n1=y['n']
k=x['cd']
for x in r:
if x['cd'] == k:
for y in x['note']:
if y['m'] == 'Physique Chimie' and y['n']<10:
print(x['cd'],x['nom'],'Maths:',n1,'Physique
Chimie:',y['n'])
mpInf10('D')
12) Calculer la moyenne de chaque candidat
from tabulate import tabulate
from bac import r
def calmoyenne(s):
C=S=0
L=[]
for x in r:
if x['serie'] == s:
for y in x['note']:
S+=y['n']*y['coef']
C+=y['coef']
L.append([x['cd'],x['nom'],x['prenom'],x['dateNaiss'],round(S/C, 2),s])
return L
#print(tabulate(calmoyenne('D'),['Mat','Nom','Pren','Moy','Serie'],tablefmt='grid'))
for s in ['A','C','D']:
print(tabulate(calmoyenne(s),['Mat','Nom','Pren','Moy','Serie'],tablefmt='grid'))
13) Donner la liste des admis en serie A
from tabulate import tabulate
from bac import r
def calmoyenne(s):
C=S=0
L=[]
for x in r:
if x['serie'] == s:
for y in x['note']:
S+=y['n']*y['coef']
C+=y['coef']
L.append([x['cd'],x['nom'],x['prenom'],x['dateNaiss'],round(S/C, 2),s])
return L
L=[]
for s in ['A','C','D']:
for e in calmoyenne(s):
if e[4]>=10:
L.append(e)
print(tabulate(L,['Mat','Nom','Pren','Moy','Serie'],tablefmt='grid'))
1) Donner la liste des echec en serie C
from tabulate import tabulate
from bac import r
def calmoyenne(s):
C=S=0
L=[]
for x in r:
if x['serie'] == s:
for y in x['note']:
S+=y['n']*y['coef']
C+=y['coef']
L.append([x['cd'],x['nom'],x['prenom'],x['dateNaiss'],round(S/C, 2),s])
return L
L=[]
for s in ['A','C','D']:
for e in calmoyenne(s):
if e[4]<=10:
L.append(e)
print(tabulate(L,['Mat','Nom','Pren','Moy','Serie'],tablefmt='grid'))
15) donner les candidats ayant des notes inferieures a 10 en Physique et Math en serie C
16) apprecier le resultat:
si moyenne >=10 alors admis
si moyenne >=9.75 et 9.99 alors second group
sinon refuse
from tabulate import tabulate
from bac import r
def calmoyenne(s):
C=S=0
L=[]
for x in r:
if x['serie'] == s:
for y in x['note']:
S+=y['n']*y['coef']
C+=y['coef']
L.append([x['cd'],x['nom'],x['prenom'],x['dateNaiss'],round(S/C, 2),s])
return L
L=[]
for s in ['A','C','D']:
for e in calmoyenne(s):
if e[4]>=10:
a='Admis'
elif e[4]>=9.75 and e[4]<=9.99:
a='Second groupe'
else:
a='Refuse'
e+=[a]
L.append(e)
print(tabulate(L,['Mat','Nom','Pren','Moy','Serie','Appreciation'],tablefmt='grid'))
17) donner le pourcentage des admis au premier groupe
from tabulate import tabulate
from bac import r
def calmoyenne(s):
C=S=0
L=[]
for x in r:
if x['serie'] == s:
for y in x['note']:
S+=y['n']*y['coef']
C+=y['coef']
L.append([x['cd'],x['nom'],x['prenom'],x['dateNaiss'],round(S/C, 2),s])
return L
L=[]
for s in ['A','C','D']:
i=j=0
for e in calmoyenne(s):
i+=1
if e[4]>=10:
j+=1
if i !=0:
print(s,round(j*100/i,2))
18) donner le pourcentage des filles admises au premier groupe
from bac import r
def calmoyenne(id):
C=S=0
for x in r:
if x['cd']==id:
for y in x['note']:
S+=y['n']*y['coef']
C+=y['coef']
return round(S/C,2)
def filleAdmise():
i=j=0
for l in r:
if l['genre']=='F':
i+=1
if calmoyenne(l['cd'])>=10:
j+=1
return round(j*100/i,2)
print(filleAdmise())
19) donner le pourcentage des filles admises et refusees au premier groupe par serie
from tabulate import tabulate
from bac import r
def calmoyenne(id):
C=S=0
for x in r:
if x['cd']==id:
for y in x['note']:
S+=y['n']*y['coef']
C+=y['coef']
return round(S/C,2)
def filleAdmisRefusee():
i=j=0
for l in r:
if l['genre']=='F':
i+=1
if calmoyenne(l['cd'])>=10:
j+=1
return round(j*100/i,2)
print('Admises:',filleAdmisRefusee())
print('Refusees:',100-filleAdmisRefusee())
Document autorise, pas de connexion à l’Internet et le téléphone éteint Durée : 2 heures
Champ Désignation Type Contrainte
id Identifiant du produit INTEGER PRIMARY KEY, AUTO-INCREMENT
prd Le nom du produit VARCHAR NOT NULL
prix Le prix de vente INT(6) NOT NULL
datePer La date de péremption DATE datePer > date du jour
qtee Quantité du produit entrée INT(10) DEFAULT 0
qtes Quantité du produit sortie INT(10) DEFAULT 0
idPr Clef étrangère dans la table INTEGER FOREIGN KEY
mouvement
Ci-joint le fichier de la base de données créée sous SQLite3 : vente.db
1. Menu de l’application
********************************* Pharmacie MURNA *****************************
************* 1 : Ajouter d’un nouveau produit 2 : Vendre un produit 4 : Quitter *************
********************************************************************************
2. Ajouter d’un nouveau produit
Si l’utilisateur a choisi la valeur ‘1’ alors ce menu s’affiche :
********************************* Ajout du produit ********************************
Entrez le nom du produit :
Entrez le prix du produit :
Entrez la date de peremption
********************************************************************************
Nb : si les valeurs sont bien saisies alors elles sont insérées dans la table ‘PRODUIT’
Requête : ‘INSERT INTO produit(prd,prix,datePer) VALUES(?,?, ?)’ ,( prd,prix,datePer)
3. Ajouter une nouvelle quantite du produit
Si l’utilisateur a choisi la valeur ‘2’ alors ce menu s’affiche :
********************************* Vente du produit ********************************
Entrez le nom du produit :
*******************************************************************************
Si le produit est trouvé alors son enregistrement est affiché sinon le message ‘Aucun produit ne
correspond a ce nom’
Au cas où le produit est recherché, ce message s’affiche :
Entrez la quantite a ajouer a ce produit :
Requête : ‘INSERT INTO mouvment(qtee,idPr) VALUES(?,?)’ ,(qtee,idPr)
4. La vente du produit
Si l’utilisateur a choisi la valeur ‘3’ alors ce menu s’affiche :
********************************* Vente du produit *********************************
Entrez le nom du produit a vendre:
*********************************************************************************
Si le produit est trouvé alors son enregistrement est affiché sinon le message ‘Aucun produit ne
correspond a ce nom !’
Au cas où le produit est recherché, ce message s’affiche :
Entrez la quantite a vendre :
Nb : on vérifie d’abord s’il y a disponibilité du produit :
Si le produit est disponible alors on fait l’insertion a la quantité à vendre sinon un message s’affiche :
‘Le produit n’est pas disponible’.
Pour vérifier la disponibilité du produit, on effectue la requête suivante :
‘SELECT SUM(qtee-qtes) dispo, id FROM mouvement, produit WHERE id=idPr AND id=? GROUP
BY id’,[id]
si la quantité à vendre est supérieure a la quantité disponible alors un message s’affiche : ‘Le produit
n’est pas disponible’.
Requête : ‘INSERT INTO mouvment(qtes,idPr) VALUES(?,?)’ ,(qtes,idPr)