xxxxxxxxxx
*Question 1 :*
Compléter la fonction `inverser_0_et_1` qui :
- prend en paramètres une matrice `mat` d'entiers égaux à `0` ou à `1`,
- **mute** `mat` afin d'en inverser toutes les valeurs : les `0` sont transformés en `1` et les `1` sont transformés en `0`.
Question 1 :
Compléter la fonction inverser_0_et_1
qui :
prend en paramètres une matrice mat
d'entiers égaux à 0
ou à 1
,
mute mat
afin d'en inverser toutes les valeurs : les 0
sont transformés en 1
et les 1
sont transformés en 0
.
xxxxxxxxxx
def inverser_0_et_1(mat):
for lig in range(...):
for col in range(...):
if mat[...][...] == 0:
mat[...][...] = ...
else:
mat[...][...] = ...
xxxxxxxxxx
<details>
<summary style="border:1pt solid slateblue; border-radius:5pt; width:15%; color:slateblue; padding:3px; background-color: lightcyan"> Solution </summary>
<div style="border:1pt solid slateblue; border-radius:5pt; color:slateblue; padding:3px; background-color: lightcyan">
```python
def inverser_0_et_1(mat):
for lig in range(len(mat)):
for col in range(len(mat[0])):
if mat[lig][col] == 0:
mat[lig][col] = 1
else:
mat[lig][col] = 0
```
</div>
</details>
def inverser_0_et_1(mat):
for lig in range(len(mat)):
for col in range(len(mat[0])):
if mat[lig][col] == 0:
mat[lig][col] = 1
else:
mat[lig][col] = 0
xxxxxxxxxx
<br/>
*Question 2 :*
Tester votre fonction grâce aux tests ci-dessous.
Question 2 :
Tester votre fonction grâce aux tests ci-dessous.
xxxxxxxxxx
mat_a = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 1, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 1, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 1, 0, 0, 0, 0],
[0, 0, 0, 1, 1, 1, 1, 0, 0, 0],
[0, 1, 1, 1, 1, 1, 1, 1, 1, 0],
[0, 0, 0, 1, 1, 1, 1, 0, 0, 0],
[0, 0, 0, 0, 1, 1, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 1, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 1, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
inverser_0_et_1(mat_a)
assert mat_a == [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 0, 0, 1, 1, 1, 1],
[1, 1, 1, 1, 0, 0, 1, 1, 1, 1],
[1, 1, 1, 1, 0, 0, 1, 1, 1, 1],
[1, 1, 1, 0, 0, 0, 0, 1, 1, 1],
[1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[1, 1, 1, 0, 0, 0, 0, 1, 1, 1],
[1, 1, 1, 1, 0, 0, 1, 1, 1, 1],
[1, 1, 1, 1, 0, 0, 1, 1, 1, 1],
[1, 1, 1, 1, 0, 0, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
mat_b = [[1, 0, 1, 0, 1],
[0, 1, 0, 1, 0],
[1, 0, 1, 0, 1],
[0, 1, 0, 1, 0],
[1, 0, 1, 0, 1]]
inverser_0_et_1(mat_b)
assert mat_b == [[0, 1, 0, 1, 0],
[1, 0, 1, 0, 1],
[0, 1, 0, 1, 0],
[1, 0, 1, 0, 1],
[0, 1, 0, 1, 0]]
mat_c = [[1]]
inverser_0_et_1(mat_c)
assert mat_c == [[0]]
mat_d = [[]]
inverser_0_et_1(mat_d)
assert mat_d == [[]]
xxxxxxxxxx
*Question 3 (facultative) :*
Parmi les formules suivantes, laquelle transforme `0` en `1` et transforme `1` en `0` ?
- $f : x \mapsto 3 \times x$
- $g : x \mapsto 5 + x$
- $h : x \mapsto 1 - x$
Question 3 (facultative) :
Parmi les formules suivantes, laquelle transforme 0
en 1
et transforme 1
en 0
?
f:x↦3×x
g:x↦5+x
h:x↦1−x
xxxxxxxxxx
Parmi les formules précédentes, celle qui transforme 0 en 1 et réciproquement est la formule ...
xxxxxxxxxx
<details>
<summary style="border:1pt solid slateblue; border-radius:5pt; width:15%; color:slateblue; padding:3px; background-color: lightcyan"> Solution </summary>
<div style="border:1pt solid slateblue; border-radius:5pt; color:slateblue; padding:3px; background-color: lightcyan">
Parmi les formules précédentes, celle qui transforme 0 en 1 et réciproquement est la formule $h$.
</div>
</details>
Parmi les formules précédentes, celle qui transforme 0 en 1 et réciproquement est la formule h.
xxxxxxxxxx
*Question 4 (facultative) :*
Modifier la fonction `inverser_0_et_1` afin de remplacer les lignes 4 à 7 (instructions conditionnelles) par une seule ligne de code.
Est-ce que le code vous semble plus clair avec cette modification ?
Question 4 (facultative) :
Modifier la fonction inverser_0_et_1
afin de remplacer les lignes 4 à 7 (instructions conditionnelles) par une seule ligne de code.
Est-ce que le code vous semble plus clair avec cette modification ?
xxxxxxxxxx
Avec cette modification je trouve, ce qui est subjectif, que le code est ... clair.
xxxxxxxxxx
<details>
<summary style="border:1pt solid slateblue; border-radius:5pt; width:15%; color:slateblue; padding:3px; background-color: lightcyan"> Solution </summary>
<div style="border:1pt solid slateblue; border-radius:5pt; color:slateblue; padding:3px; background-color: lightcyan">
```python
def inverser_0_et_1(mat):
for lig in range(len(mat)):
for col in range(len(mat[0])):
mat[lig][col] = 1 - mat[lig][col]
```
</div>
</details>
def inverser_0_et_1(mat):
for lig in range(len(mat)):
for col in range(len(mat[0])):
mat[lig][col] = 1 - mat[lig][col]
xxxxxxxxxx
<details>
<summary style="border:1pt solid slateblue; border-radius:5pt; width:15%; color:slateblue; padding:3px; background-color: lightcyan"> Solution </summary>
<div style="border:1pt solid slateblue; border-radius:5pt; color:slateblue; padding:3px; background-color: lightcyan">
Avec cette modification je trouve, ce qui est subjectif, que le code est moins clair (vous aviez le droit de répondre que vous trouviez cela plus clair).
</div>
</details>
Avec cette modification je trouve, ce qui est subjectif, que le code est moins clair (vous aviez le droit de répondre que vous trouviez cela plus clair).