IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Programmation Python pour les scientifiques

Listes et autres structures de données - Cours avec exercices corrigés


précédentsommairesuivant

V. Énoncés des exercices

V-A. Suite arithmétique

Écrire deux fonctions de paramètre N entier naturel, et qui retournent la liste des n premiers termes de la suite arithmétique de raison 12 et de premier terme 1 :

kitxmlcodelatexdvp\forall n \in\mathbb{N}\quad u_n=12n+1finkitxmlcodelatexdvp

par deux méthodes différentes :

  • à l'aide d'une boucle ;
  • en compréhension de liste.

Évaluer la rapidité des deux fonctions en utilisant la fonction magique %timeit dans une console IPython.

SolutionSuite arithmétique : solution

V-B. Moyenne et variance

  1. Écrire une fonction moyenne() prenant en paramètre une liste de nombres et qui retourne sa moyenne.
  2. Écrire une fonction variance() prenant en paramètre une liste de nombres et qui retourne sa variance.

On pourra les tester sur des listes de nombres aléatoires que l'on aura créées à l'aide de la fonction random() du module random qui renvoie un décimal (float) aléatoire dans [0,1[.

SolutionMoyenne et variance : solution

V-C. Listes définies en compréhension

Construire par compréhension de liste les listes suivantes :

  1. La liste des logarithmes népériens (ln) des entiers compris entre 1 et 20 ;
  2. La liste des entiers compris entre 0 et 100 qui sont pairs et qui ne sont pas des multiples de 3 ;
  3. La liste ['@-@', '@--@', '@---@', '@----@', '@-----@'] ;
  4. La liste des couples d'entiers entre 0 et 10 dont la somme est un multiple de 5 ;
  5. Écrire une fonction qui prend pour paramètre un entier n et retourne sous forme d'une liste de listes la matrice identité de rang n.

SolutionListes définies en compréhension : solution

V-D. Chiffrement de César

C'est une méthode très simple de chiffrement de messages en un texte crypté pour le rendre « illisible » à qui n'en a pas la clef. Dans un message en lettres majuscules, supprimer tous les espaces et symboles, puis changer chaque lettre par sa Nième lettre suivante dans l'ordre alphabétique (après 'z' on reprend à 'a'), où N est un entier entre 1 et 25.

  1. Écrire une fonction cesar_crypt() qui prend deux paramètres, la clef de chiffrement N et une chaîne de caractères en majuscules sans symbole ni espace, et renvoie le chiffrement de César de la chaîne.
  2. Écrire une fonction cesar_decrypt() qui prend deux paramètres, un texte crypté et la clef, puis retourne le texte décrypté.

SolutionChiffrement de César : solution

V-E. Triangle de Pascal

Écrire une fonction pascal_triangle() qui prend en paramètre un entier kitxmlcodeinlinelatexdvpnfinkitxmlcodeinlinelatexdvp et retourne une liste constituée de kitxmlcodeinlinelatexdvpn+1finkitxmlcodeinlinelatexdvp listes, la liste kitxmlcodeinlinelatexdvpp\in\left[ \left[ 0,n\right] \right]finkitxmlcodeinlinelatexdvp contenant les kitxmlcodeinlinelatexdvpp+1finkitxmlcodeinlinelatexdvp coefficients binomiaux kitxmlcodeinlinelatexdvp{p\choose0},{p\choose1\vphantom0},...,{p\choose p}finkitxmlcodeinlinelatexdvp.

Par exemple pour kitxmlcodeinlinelatexdvpn=2finkitxmlcodeinlinelatexdvp le résultat retourné devrait être : [[1], [1, 1], [1, 2, 1]].

Pour cela, on appliquera : kitxmlcodeinlinelatexdvp{n\choose0}={n\choose n\vphantom0 }=1finkitxmlcodeinlinelatexdvp et la relation de Pascal :

kitxmlcodelatexdvp\forall k\in\left[\left[ 1,n-1 \right]\right],\quad {n\choose k}={n-1\choose k-1}+{n-1\choose k}finkitxmlcodelatexdvp

SolutionTriangle de Pascal : solution


précédentsommairesuivant

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2014 Jean-Philippe PREAUX. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.