Outils pour utilisateurs

Outils du site


tp:python:python01

Warning: Trying to access array offset on false in /home/signac/doku/inc/html.php on line 1164

Warning: Trying to access array offset on false in /home/signac/doku/inc/html.php on line 1168

Warning: Trying to access array offset on false in /home/signac/doku/inc/html.php on line 1171

Warning: Trying to access array offset on false in /home/signac/doku/inc/html.php on line 1172

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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 15:41]
lsignac [Boucle : Arithmancie]
tp:python:python01 [2021/05/04 15:12] (Version actuelle)
Ligne 1: Ligne 1:
-====== Travaux pratiques Python ======+====== 📓 Travaux pratiques Python (01) ====== 
 + 
 +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 : ''%%if __name__ == '__main__'...%%'' Vous ne **devez** pas modifier ces tests. Ils vous permettent de savoir, dans la plupart des cas, si vous avez fait une erreur. 
 + 
 +<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... 
 +</WRAP>
  
-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 : ''if __name__ == '__main__'...'' Vous ne **devez** pas modifier ces tests. 
 ===== 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 VOTRELOGIN_scalaire.py>+<file python votrelogin_scalaire.py>
 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 VOTRELOGIN_triangle.py>+<file python votrelogin_triangle.py>
 def triangle(a, b, c): def triangle(a, b, c):
     pass     pass
 +    
          
 if __name__ == '__main__': if __name__ == '__main__':
-    assert triangle(1, 2, 5) == True, "Test 1" +    assert triangle(2, 3, 4) == True, "Test 1" 
-    assert triangle(5, 1, 2) == True, "Test 2" +    assert triangle(4, 2, 3) == True, "Test 2" 
-    assert triangle(251) == True, "Test 3" +    assert triangle(342) == True, "Test 3" 
-    assert triangle(2, 34) == False, "Test 4" +    assert triangle(2, 51) == False, "Test 4" 
-    assert triangle(2, 5, -1) == False, "Test 5"+    assert triangle(2, 3, -1) == False, "Test 5"
     assert triangle(2, 3, 5) == False, "Test 6"     assert triangle(2, 3, 5) == False, "Test 6"
     print("Tests OK")     print("Tests OK")
 +
 </file> </file>
  
 ===== 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 VOTRELOGIN_arithmancie.py>+<file python votrelogin_arithmancie.py>
 def arithmancie(chaine): def arithmancie(chaine):
     pass     pass
Ligne 51: Ligne 59:
     assert arithmancie("Lucifer") == 74     assert arithmancie("Lucifer") == 74
     assert arithmancie("Babar et ses z'AMIS") == 160     assert arithmancie("Babar et ses z'AMIS") == 160
 +    assert arithmancie("Ça, c'est assez pénible") == 176
 +    print("Tests OK")
 </file> </file>
 +
 +===== Listes imbriqués : Centre de gravité =====
 +Écrivez une fonction qui indique, étant donnée une liste de points de l'espace, où est placé 
 +le centre de gravité de ces points, en supposant qu'ils ont tous la même masse.
 +Chaque point de l'espace est une séquence de 3 coordonnées. En conséquence, une liste de points de 
 +l'espace est une séquence de séquences.
 +
 +    
 +<file python votrelogin_centre.py>
 +def centre(l):
 +    pass
 +
 +
 +if __name__ == '__main__':
 +    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("Tests OK")
 +  
 +</file>
 +
 +===== Figure fractale : courbe de l'étoile =====
 +
 +Début de la fractale :
 + Au centre, les 3 angles mesurent 120°.
 +
 +{{ :tp:python:courbe_etoile_3.png?nolink&200 |}}
 +
 +puis (les segments les plus courts ont une longueur égale à la moitié des 
 +segments les plus longs)
 +
 +{{ :tp:python:courbe_etoile_2.png?nolink&200 |}}
 +
 +Puis : 
 +
 +{{ :tp:python:courbe_etoile_4.png?nolink&200 |}}
 +
 +Fractale finale :
 +{{ :tp:python:courbe_etoile_1.png?nolink&500 |}}
 +
 +<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).<wrap tip>Si vous ne savez pas faire... demandez</wrap>.
 +</WRAP>
 +
 +<file python votrelogin_etoile.py>
 +import turtle as tur
 +
 +#def ....
 +
 +# Programme principal :
 +tur.reset()
 +tur.tracer(1,0)
 +</file>
 +
  
 ===== 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 certaines pièces, dont les valeurs sont indiquées 
 +en paramètre de la fonction (ça pourrait être par exemple des pièces de 1,2, 5 et 10).
  
 <WRAP tip> <WRAP tip>
-Vous pouvez diviser le nmbre de façons de construire la somme S avec les pièces [a, b, ..., n] en deux (selon que vous utilisez ou non la valeur a) :+Vous pouvez diviser le nombre de façons de construire la somme S avec les pièces [a, b, ..., n] en deux (selon que vous utilisez ou non la valeur a) :
   * les façons de construire la somme S - a avec les pièces [a, b, ..., n]   * les façons de construire la somme S - a avec les pièces [a, b, ..., n]
   * 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]
 +
 </WRAP> </WRAP>
  
-<file python VOTRELOGIN_monnaie.py>+<file python votrelogin_monnaie.py> 
 + 
 +# Votre code ici  
 +# ...
  
 if __name__ == '__main__': if __name__ == '__main__':
-    ...+    assert monnaie(2, [1, 2]) == 2 
 +    assert monnaie(5, [1, 2, 5]) == 4 
 +    assert monnaie(10, [1, 2, 5]) == 10 
 +    assert monnaie(100, [1, 2, 5, 10]) == 2156 
 +    assert monnaie(42, [1, 3, 7]) == 54 
 +    print("Tests OK") 
 +    
 </file> </file>
  
- 
-     
-     
-   
  
    
tp/python/python01.1416238890.txt.gz · Dernière modification: 2014/11/17 15:41 de lsignac