Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
tp:python:python01 [2014/11/17 16:02] lsignac [Travaux pratiques Python] |
tp:python:python01 [2021/05/04 15:12] (Version actuelle) |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Travaux pratiques Python ====== | + | ====== |
+ | Â | ||
+ | Réalisez les exercices suivants. La plupart du temps, un programme de départ vous est proposé. Ce programme comporte des tests fonctionnels (limités à leur plus simple expression) dans le bloc : '' | ||
+ | Â | ||
+ | <WRAP tip> Â | ||
+ | Ce n'est pas parce que votre programme passe tous les tests qu'il est juste. Par contre, s'il ne passe | ||
+ | pas certains tests, il y a de grandes chances pour qu'il soit faux... | ||
+ | </ | ||
- | Réalisez les exercices suivants. Dans chaque cas, un programme de départ vous est proposé. Ce programme comporte des tests fonctionnels (limités à leur plus simple expression) dans le bloc : '' | ||
===== Listes : Produit Scalaire ===== | ===== Listes : Produit Scalaire ===== | ||
On peut utiliser une séquence pour représenter un vecteur. | On peut utiliser une séquence pour représenter un vecteur. | ||
Ligne 7: | Ligne 13: | ||
Votre programme devra passer tous les test : | Votre programme devra passer tous les test : | ||
- | <file python | + | <file python |
def scalaire(u, v): | def scalaire(u, v): | ||
pass | pass | ||
Ligne 23: | Ligne 29: | ||
un triangle (non réduit à un segment) ayant ces 3 valeurs pour longueurs de côtés. | un triangle (non réduit à un segment) ayant ces 3 valeurs pour longueurs de côtés. | ||
- | <file python | + | <file python |
def triangle(a, b, c): | def triangle(a, b, c): | ||
pass | pass | ||
+ | | ||
| | ||
if __name__ == ' | if __name__ == ' | ||
- | assert triangle(1, 2, 5) == True, "Test 1"Â | + | assert triangle(2, |
- | assert triangle(5, 1, 2) == True, "Test 2"Â | + | assert triangle(4, 2, 3) == True, "Test 2"Â |
- | assert triangle(2, 5, 1) == True, "Test 3"Â | + | assert triangle(3, 4, 2) == True, "Test 3"Â |
- | assert triangle(2, | + | assert triangle(2, |
- | assert triangle(2, | + | assert triangle(2, |
assert triangle(2, 3, 5) == False, "Test 6" | assert triangle(2, 3, 5) == False, "Test 6" | ||
print(" | print(" | ||
+ | |||
</ | </ | ||
===== Boucle : Arithmancie ===== | ===== Boucle : Arithmancie ===== | ||
- | Écrivez une fonction qui associe un nombre à un mot. Pour trouver ce nombre on ajoutera la valeur de chaque lettre du mot. La valeur du A sera 0, celle du B : 2.... et celle du Z : 26. | + | Écrivez une fonction qui associe un nombre à un mot. Pour trouver ce nombre on ajoutera la valeur de chaque lettre du mot. La valeur du A sera 1, celle du B : 2.... et celle du Z : 26. |
Attention, votre fonction devra associer les valeurs 1, 2... que les lettres soient en majuscule ou en minuscule. Les autres caractères seront tout simplement ignorés, ainsi que les caractères accentués. | Attention, votre fonction devra associer les valeurs 1, 2... que les lettres soient en majuscule ou en minuscule. Les autres caractères seront tout simplement ignorés, ainsi que les caractères accentués. | ||
- | <file python | + | <file python |
def arithmancie(chaine): | def arithmancie(chaine): | ||
pass | pass | ||
Ligne 51: | Ligne 59: | ||
assert arithmancie(" | assert arithmancie(" | ||
assert arithmancie(" | assert arithmancie(" | ||
+ | assert arithmancie(" | ||
+ | print(" | ||
</ | </ | ||
+ | |||
+ | ===== Listes imbriqués : Centre de gravité ===== | ||
+ | Écrivez une fonction qui indique, étant donnée une liste de points de l' | ||
+ | le centre de gravité de ces points, en supposant qu'ils ont tous la même masse. | ||
+ | Chaque point de l' | ||
+ | l' | ||
+ | |||
+ | | ||
+ | <file python votrelogin_centre.py> | ||
+ | def centre(l): | ||
+ | pass | ||
+ | |||
+ | |||
+ | if __name__ == ' | ||
+ | l = ((1, 1, 1),) | ||
+ | assert tuple(centre(l)) == (1, 1, 1) | ||
+ | l = ((0, 0, 0), (2, 2, 2)) | ||
+ | assert tuple(centre(l)) == (1, 1, 1) | ||
+ | l = ((1, 2, 3), (0, 0, 1), (2, -5, 2)) | ||
+ | assert tuple(centre(l)) == (1, -1, 2) | ||
+ | l = ((-1, 2, 1), (-5, -2, 1), (-3, -5, 2), (-1,5,0)) | ||
+ | assert tuple(centre(l)) == (-2.5, 0, 1) | ||
+ | print(" | ||
+ | | ||
+ | </ | ||
+ | |||
+ | ===== Figure fractale : courbe de l' | ||
+ | |||
+ | Début de la fractale : | ||
+ | Au centre, les 3 angles mesurent 120°. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | puis (les segments les plus courts ont une longueur égale à la moitié des | ||
+ | segments les plus longs) | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Puis : | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Fractale finale : | ||
+ | {{ : | ||
+ | |||
+ | <WRAP important> | ||
+ | Afin de pouvoir tester facilement votre code, vous devez régler la boucles des événements du Shell : TK (au lieu de PySide).< | ||
+ | </ | ||
+ | |||
+ | <file python votrelogin_etoile.py> | ||
+ | import turtle as tur | ||
+ | |||
+ | #def .... | ||
+ | |||
+ | # Programme principal : | ||
+ | tur.reset() | ||
+ | tur.tracer(1, | ||
+ | </ | ||
+ | |||
===== Récursivité : Rendre la monnaie ===== | ===== Récursivité : Rendre la monnaie ===== | ||
Écrivez une fonction qui dénombre le nombre de façons différentes de | Écrivez une fonction qui dénombre le nombre de façons différentes de | ||
- | construire une certaine somme S en utilisant uniquement des pièces de 1,2, 5 et 10. | + | construire une certaine somme S en utilisant uniquement |
+ | en paramètre de la fonction (ça pourrait être par exemple | ||
<WRAP tip> | <WRAP tip> | ||
Ligne 62: | Ligne 132: | ||
* les façons de construire la somme S avec les pièces [b, ..., n] | * les façons de construire la somme S avec les pièces [b, ..., n] | ||
- | Il est plus facile de résoudre ce problème en écrivant une fonction qui renvoie le nombre de manière de faire la monnaie pour une somme arbitraire **et** une liste arbitraire de pièces (qui doivent être toutes différentes...). C'est pourquoi la liste des pièces disponibles est passée en paramètres à la fonction '' | ||
</ | </ | ||
- | <file python | + | <file python |
# Votre code ici | # Votre code ici | ||
Ligne 75: | Ligne 144: | ||
assert monnaie(10, [1, 2, 5]) == 10 | assert monnaie(10, [1, 2, 5]) == 10 | ||
assert monnaie(100, | assert monnaie(100, | ||
- | print(" | + | |
+ | | ||
| | ||
</ | </ | ||
- | |||
- | | ||
- | | ||
- | | ||