Outils pour utilisateurs

Outils du site


tp:python:python01

Ceci est une ancienne révision du document !



Warning: Undefined array key "lang" in /home/signac/doku/lib/plugins/wrap/helper.php on line 94

Warning: Undefined array key "id" in /home/signac/doku/lib/plugins/wrap/helper.php on line 117

Warning: Undefined array key "width" in /home/signac/doku/lib/plugins/wrap/helper.php on line 119

Warning: Undefined array key "dir" in /home/signac/doku/lib/plugins/wrap/helper.php on line 128

Travaux pratiques Python

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

On peut utiliser une séquence pour représenter un vecteur. Écrivez une fonction qui calcule le produit scalaire de deux vecteurs de R3. Votre programme devra passer tous les test :

VOTRELOGIN_scalaire.py
def scalaire(u, v):
    pass
 
 
if __name__ == '__main__':
    assert scalaire((4,2,3), (1,1,1)) == 9, "Test 1"
    assert scalaire((4,2,3), (-1,1,1)) == 1, "Test 2"
    assert scalaire((3,5,7), (10,20,30)) == 340, "Test 3"
    print("Tests OK")

Tests : Triangle

Écrivez une fonction qui prend en paramètres 3 nombres et indique s'il est possible de construire un triangle (non réduit à un segment) ayant ces 3 valeurs pour longueurs de côtés.

VOTRELOGIN_triangle.py
def triangle(a, b, c):
    pass
 
if __name__ == '__main__':
    assert triangle(1, 2, 5) == True, "Test 1"
    assert triangle(5, 1, 2) == True, "Test 2"
    assert triangle(2, 5, 1) == True, "Test 3"
    assert triangle(2, 3, 4) == False, "Test 4"
    assert triangle(2, 5, -1) == False, "Test 5"
    assert triangle(2, 3, 5) == False, "Test 6"
    print("Tests OK")

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. 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.

VOTRELOGIN_arithmancie.py
def arithmancie(chaine):
    pass
 
if __name__=='__main__':
    assert arithmancie("A") == 1
    assert arithmancie("BABAR") == 24
    assert arithmancie("BAbar") == 24
    assert arithmancie("Lucifer") == 74
    assert arithmancie("Babar et ses z'AMIS") == 160

Récursivité : Rendre la monnaie

É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.

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 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.

VOTRELOGIN_monnaie.py
# Votre code ici 
# ...
 
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
    print("Test OK")
 
tp/python/python01.1416240062.txt.gz · Dernière modification: 2014/11/17 16:01 de lsignac