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.
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…
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 :
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")
É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.
def triangle(a, b, c): pass if __name__ == '__main__': assert triangle(2, 3, 4) == True, "Test 1" assert triangle(4, 2, 3) == True, "Test 2" assert triangle(3, 4, 2) == True, "Test 3" assert triangle(2, 5, 1) == False, "Test 4" assert triangle(2, 3, -1) == False, "Test 5" assert triangle(2, 3, 5) == False, "Test 6" print("Tests OK")
É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.
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 assert arithmancie("Ça, c'est assez pénible") == 176 print("Tests OK")
É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.
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")
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 :
Afin de pouvoir tester facilement votre code, vous devez régler la boucles des événements du Shell : TK (au lieu de PySide).Si vous ne savez pas faire… demandez.
import turtle as tur #def .... # Programme principal : tur.reset() tur.tracer(1,0)
Écrivez une fonction qui dénombre le nombre de façons différentes de 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).
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) :
# 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 assert monnaie(42, [1, 3, 7]) == 54 print("Tests OK")