Add¶
But de l'éxercice¶
Le but de l'exercice de cette semaine est d'ecrire une fonction add, dans un fichier add.py qui effectue l'addition entre deux matrices.
Et voila le script de tests unitaires: test_add.py
Exercice de base¶
Etant données deux matrices (liste de listes de nombres), retourner la matrice (liste de liste de nombres) résultant de l'addition des deux composants.
>>> m1 = [[1, 2], [3, 4]]
>>> m2 = [[4, 5], [1, 2]]
>>> add(m1, m2)
[[5, 7], [4, 6]]
Les matrices ne sont pas forcement carrées et leur taille n'est pas figée:
>>> m1 = [[1, 2], [3, 4], [1, 2], [1, 2]]
>>> m2 = [[4, 5], [1, 2], [1, 2], [2, 1]]
>>> add(m1, m2)
[[5, 7], [4, 6], [2, 4], [3, 3]]
Il faut éviter de résoudre ce problème en utilisant une bibliothèque tierce (numpy, ou pandas par exemple).
Il faut aussi faire en sorte de résoudre ce problème de la manière la plus pythonienne possible avant de regarder les bonus. Notament, il ne faut pas boucler avec des indexes...
Bonus numéro 1¶
Autoriser l'addition de n'importe quel nombre de matrices:
>>> m1 = [[1, 2], [3, 4]]
>>> m2 = [[4, 5], [1, 2]]
>>> m3 = [[-1, -2], [-1, -2]]
>>> add(m1, m2, m3)
[[4, 5], [3, 4]]
Bonus numéro 2¶
Faire en sorte que la fonction add lève une exception de type ValueError si les matrices ne sont pas de même dimensions:
>>> m1 = [[1, 2], [3, 4]]
>>> m2 = [[4, 5], [1, 2], [1, 2]]
>>> add(m1, m2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "add.py", line 10, in add
raise ValueError("Given matrices are not the same shape.")
ValueError: Given matrices are not the same shape.
Aide¶
Si vraiment vous êtes bloqué.e.s, vous pouvez regarder ces articles:
- Iterating lists with and without indexes
- Multiple assignment might come in handy
- A special syntax for creating new lists from old lists
- Accepting any number of arguments to a function
- More discussion on accepting any number of arguments
- Raising an exception in Python