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 16:01]
lsignac [Récursivité : Rendre la monnaie]
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>
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ètre Ă  la fonction ''monnaie''. 
 </WRAP> </WRAP>
  
-<file python VOTRELOGIN_monnaie.py>+<file python votrelogin_monnaie.py>
  
 # 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, [1, 2, 5, 10]) == 2156     assert monnaie(100, [1, 2, 5, 10]) == 2156
-    print("Test OK")+    assert monnaie(42, [1, 3, 7]) == 54 
 +    print("Tests OK")
          
 </file> </file>
  
- 
-     
-     
-   
  
    
tp/python/python01.1416240062.txt.gz · Dernière modification: 2014/11/17 16:01 de lsignac