You are on page 1of 5

Alternative de correction de l’EXAMEN 3

EXERCICE 1
A.

Question 1

class Pile :

‘’ ‘’ ‘’ une pile est une structure de composée de type LIFO ‘’ ‘’ ‘’

def __init__(self , L = []) :

self.stack = L

def Taille(self) :

return len(self.stack)

def EstVide(self) :

return self.stack = [ ]

def Sommet(self) :

return self.stack[-1]

def Empiler(self , e) :

self.stack.append(e)

def Depiler(self) :

if not(self.EstVide()) :

e = self.stack.pop()

return e

B.

Question 2

def Nombre() :

while (True) :

n = int(input(‘’ donner le nombre d’éléves : ‘’))

if n > 1 :

break
return n

Question 3

def SaisiRep(n) :

d = {}

for i in range(1 , n+1) :

p = Pile()

while (True)

rep = input(‘’ donner une réponse : ‘’)

if rep = ‘O’ or rep = ‘R’ or rep = ‘V’ :

p.Empiler(rep)

elif rep = ‘*’

break

d.update({ i : p }) #ou bien d[i] = p

return d

Question 4

def AfficheRep(d) :

for num in d.keys() :

p = d[num]

while not(p.EstVide()) :

rep = p.Depiler()

if rep = ‘V’ :

print(‘’ réponse correcte ‘’)

elif rep = ‘O’ :

print(‘’ réponse approximative ‘’)

else :

print(‘’ réponse incorrecte ‘’)


Question 5

def resultat(p) :

R=0

while not(p.EstVide()) :

rep = p.Depiler()

if rep = ‘V’ :

R += 10

elif rep = ‘O’ :

R += 5

else :

R -= 10

return R

Question 6

def Resultats(d) :

d1 = {}

for cle in d.keys() :

d1.update( {cle : Resultat(d[c]} )

return d1

EXERCICE 2
from numpy import *

Question 1

def Trace(M) :

return sum(M[i][i] for i in range(len(M)))

Question 2

def Identite(n) :

Id = zeros( (n,n) )

for i in range(n) :
Id[i][i] = 1

return Id

Question 3

def Produit(M , N) :

n = len(M)

X = empty( (n,n) )

for i in range(n) :

for j in range(n) :

sum(M[i][k] * N[k][j] for k in range(n) )

return X

Question 4

def CalculPol(M) :

n = len(M)

A = M[:][:]

C = - Trace(A)

L = [1 , C]

for i in range(2 , n+1) :

B = Produit((A + C*Identite(n)) , M)

C = - Trace(B)

L.append(C)

A = B[:][:]

return L
EXERCICE 3

1) SELECT * FROM Employe


WHERE Comm IS NOT NULL
ORDER BY Comm DESC ;

2) SELECT NomE FROM Employe


WHERE Salaire > 1500 ;

3) SELECT * FROM Employe , Departement


WHERE Lieu = ‘Créteil ‘ AND Employe.NumD =
Departement.NumD ;

4) SELECT AVG(Salaire) Employe ;

5) SELECT COUNT(*) FROM Employe


WHERE Comm IS NOT NULL ;

6) SELECT NumD , MIN(Salair) , MAX(Salaire)


FROM Employe
GROUP BY NumD ;

7) SELECT * FROM Employe


WHERE Salaire > SELECT MAX(Salaire) FROM
Employe ;

You might also like