Ep 32
le document
l'algorithme
Issue de : 23-NSI-35
EXERCICE 1
L'opĂ©rateur « ou exclusif » entre deux bits renvoie 0 si les deux bits sont Ă©gaux et 1 s'ils sont diffĂ©rents. Il est symbolisĂ© par le caractĂšre â.
Ainsi :
- 0 â 0 = 0
- 0 â 1 = 1
- 1 â 0 = 1
- 1 â 1 = 0
Ăcrire la fonction ou_exclusif
qui prend en paramĂštres deux tableaux de mĂȘme longueur et qui renvoie un tableau oĂč lâĂ©lĂ©ment situĂ© Ă position i
est le rĂ©sultat, par lâopĂ©rateur « ou exclusif », des Ă©lĂ©ments Ă la position i
des tableaux passés en paramÚtres.
Exemple :
đ Script Python >>> ou_exclusif(a, b)
[1, 1, 0, 1, 1, 0, 0, 1]
>>> ou_exclusif(c, d)
[1, 1, 1, 0]
RĂ©ponse
Complétez le code ci-dessous
# Mettre votre code icibksl-nlbksl-nl
Solution
def oupy-undexclusif(tab1, tab2):bksl-nl resultat = []bksl-nl taille = len(tab1)bksl-nl for i in range(taille):bksl-nl resultat.append(tab1[i] ^ tab2[i])bksl-nl return resultatbksl-nlbksl-nl#Si on ne connait pas la fonction native ^ qui fait le «ou exclusif» de deux entiers en Python, on peut la recoder :bksl-nlbksl-nldef oupy-undexc(a, b):bksl-nl if a == 0 and b == 0:bksl-nl return 0bksl-nl if a == 0 and b == 1:bksl-nl return 1bksl-nl if a == 1 and b == 0:bksl-nl return 1bksl-nl if a == 1 and b == 1:bksl-nl return 0bksl-nlbksl-nl#Le code devient alors :bksl-nlbksl-nldef oupy-undexclusif(tab1, tab2):bksl-nl resultat = []bksl-nl taille = len(tab1)bksl-nl for i in range(taille):bksl-nl resultat.append(oupy-undexc(tab1[i],tab2[i]))bksl-nl return resultatbksl-nlbksl-nltry:bksl-nl assert oupy-undexclusif([1, 0, 1, 0, 1, 1, 0, 1], [0, 1, 1, 1, 0, 1, 0, 0]) == [1, 1, 0, 1, 1, 0, 0, 1]bksl-nl assert oupy-undexclusif([1, 1, 0, 1], [0, 0, 1, 1]) == [1, 1, 1, 0]bksl-nl print('Tout semble correct đ')bksl-nlbksl-nlexcept AssertionError as asser:bksl-nl print('Le rĂ©sultat de votre fonction n\'est pas conforme đ€')bksl-nl
EXERCICE 2
Dans cet exercice, on appelle carrĂ© dâordre \(n\) un tableau de \(n\) lignes et \(n\) colonnes dont chaque case contient un entier naturel.
Exemples :
Un carré est dit semimagique lorsque les sommes des éléments situés sur chaque ligne, chaque colonne sont égales.
-
Ainsi c2 et c3 sont semimagiques car la somme de chaque ligne, chaque colonne et chaque diagonale est Ă©gale Ă 8 pour c2 et 12 pour c3.
-
Le carre c3bis n'est pas semimagique car la somme de la premiĂšre ligne est Ă©gale Ă 15 alors que celle de la deuxiĂšme ligne est Ă©gale Ă 10.
La classe Carre
ci-aprÚs contient des méthodes qui permettent de manipuler des carrés.
-
La mĂ©thode constructeur crĂ©e un carrĂ© sous forme dâun tableau Ă deux dimensions Ă partir dâune liste dâentiers, et dâun ordre.
-
La méthode affiche
permet dâafficher le carrĂ© crĂ©Ă©.
Compléter la méthode est_semimagique qui renvoie True si le carré est semimagique,
False sinon.
đ Script Python |
---|
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 | class Carre:
def __init__(self, liste, n):
self.ordre = n
self.tableau = [[liste[i + j * n] for i in range(n)]
for j in range(n)]
def affiche(self):
'''Affiche un carré'''
for i in range(self.ordre):
print(self.tableau[i])
def somme_ligne(self, i):
'''Calcule la somme des valeurs de la ligne i'''
somme = 0
for j in range(self.ordre):
somme = somme + self.tableau[i][j]
return somme
def somme_col(self, j):
'''Calcule la somme des valeurs de la colonne j'''
somme = 0
for i in range(self.ordre):
somme = somme + self.tableau[i][j]
return somme
def est_semimagique(self):
s = self.somme_ligne(0)
#test de la somme de chaque ligne
for i in range(...):
if ... != s:
return ...
#test de la somme de chaque colonne
for j in range(...):
if ... != s:
return ...
return ...
|
Exemple :
đ Script Python>>> lst_c3 = [3, 4, 5, 4, 4, 4, 5, 4, 3]
>>> c3 = Carre(lst_c3, 3)
>>> c3.affiche()
[3, 4, 5]
[4, 4, 4]
[5, 4, 3]
RĂ©ponse
Complétez le code ci-dessous
class Carre:bksl-nl def py-undpy-undinitpy-undpy-und(self, liste, n): bksl-nl self.ordre = n bksl-nl self.tableau = [[liste[i + j py-str n] for i in range(n)] for j in range(n)] bksl-nl bksl-nl def affiche(self): bksl-nl '''Affiche un carré''' bksl-nl for i in range(self.ordre): bksl-nl print(self.tableau[i]) bksl-nl bksl-nl def sommepy-undligne(self, i): bksl-nl '''Calcule la somme des valeurs de la ligne i''' bksl-nl somme = 0 bksl-nl bksl-nl for j in range(self.ordre):bksl-nl somme = somme + self.tableau[i][j] bksl-nl return somme bksl-nl bksl-nl def sommepy-undcol(self, j): bksl-nl '''Calcule la somme des valeurs de la colonne j''' bksl-nl somme = 0bksl-nl bksl-nl for i in range(self.ordre): bksl-nl somme = somme + self.tableau[i][j] bksl-nl return somme bksl-nl bksl-nl def estpy-undsemimagique(self): bksl-nl s = self.sommepy-undligne(0) bksl-nl #test de la somme de chaque ligne bksl-nl for i in range(...): bksl-nl if ... != s: bksl-nl return ... bksl-nl bksl-nl #test de la somme de chaque colonne bksl-nl for j in range(...): bksl-nl if ... != s: bksl-nl return ... bksl-nl return ... bksl-nlbksl-nl
Solution
class Carre:bksl-nl def py-undpy-undinitpy-undpy-und(self, liste, n):bksl-nl self.ordre = nbksl-nl self.tableau = [[liste[i + j py-str n] for i in range(n)] for j in range(n)]bksl-nlbksl-nl def affiche(self):bksl-nl '''Affiche un carrĂ©'''bksl-nl for i in range(self.ordre):bksl-nl print(self.tableau[i])bksl-nl return self.tableaubksl-nlbksl-nl def sommepy-undligne(self, i):bksl-nl '''Calcule la somme des valeurs de la ligne i'''bksl-nl somme = 0bksl-nlbksl-nl for j in range(self.ordre):bksl-nl somme = somme + self.tableau[i][j]bksl-nl return sommebksl-nlbksl-nl def sommepy-undcol(self, j):bksl-nl '''Calcule la somme des valeurs de la colonne j'''bksl-nl somme = 0bksl-nl for i in range(self.ordre):bksl-nl somme = somme + self.tableau[i][j]bksl-nl return sommebksl-nlbksl-nl def estpy-undsemimagique(self):bksl-nl s = self.sommepy-undligne(0)bksl-nl #test de la somme de chaque lignebksl-nl for i in range(self.ordre):bksl-nl if self.sommepy-undligne(i) != s:bksl-nl return Falsebksl-nlbksl-nl #test de la somme de chaque colonnebksl-nl for j in range(self.ordre):bksl-nl if self.sommepy-undcol(j) != s:bksl-nl return Falsebksl-nl return Truebksl-nltry:bksl-nl lstpy-undc3 = [3, 4, 5, 4, 4, 4, 5, 4, 3]bksl-nl c3 = Carre(lstpy-undc3, 3)bksl-nl assert c3.affiche() == [[3, 4, 5], [4, 4, 4], [5, 4, 3]]bksl-nl assert c3.estpy-undsemimagique() == Truebksl-nl print('Tout semble correct đ')bksl-nlbksl-nlexcept AssertionError as asser:bksl-nl print('Le rĂ©sultat de votre fonction n\'est pas conforme đ€')bksl-nl