prépas 1re année scientifiques iNFORMATIQUE aVEC PYTHON Chez le même éditeur Py

prépas 1re année scientifiques iNFORMATIQUE aVEC PYTHON Chez le même éditeur Python 3 2e édition Bob Cordeau, Laurent Pointal 304 pages Dunod, 2020 Informatique Joëlle Delacroix et al. 480 pages Dunod, 2017 Algorithmes Thomas H. Cormen 240 pages Dunod, 2013 Programmation Python avancée Xavier Olive 368 pages Dunod, 2021 Python pour le data scientist 2e édition Emmanuel Jakobowicz 320 pages Dunod, 2021 prépas 1re année scientifiques iNFORMATIQUE aVEC PYTHON Jean-Noël Beury exercices incontournables © Dunod, 2021 11 rue Paul Bert, 92240 Malakoff www.dunod.com ISBN 978-2-10-083134-0 Conception graphique de la couverture : Hokus Pokus Créations Table des matières Avant-propos VII Partie 1 Prise en main de Python 1. Prise en main de Python 3 2. Tableaux numpy – Slicing 15 3. Graphiques 29 Partie 2 Terminaison – Correction – complexité 4. Terminaison – Correction – complexité 37 Partie 3 Algorithmes 5. Recherche séquentielle 51 6. Algorithmes de dichotomie 57 Partie 4 Récursivité 7. Récursivité 67 Partie 5 Algorithmes gloutons 8. Algorithmes gloutons 95 Partie 6 Lecture et écriture de fichiers – Matrices de pixels et images 9. Lecture et écriture de fichiers 107 10. Traitement d’images 113 Partie 7 Tris 11. Tris 123 Partie 8 Dictionnaire – Pile – File – Deque 12. Dictionnaire – Pile – File – Deque 151 Partie 9 Graphes 13. Graphes 177 Partie 10 Recherche du plus court chemin 14. Recherche du plus court chemin 221 Index  247 Vous pouvez télécharger à partir de la page de présentation de l’ouvrage sur le site Dunod tous les programmes Python des exercices. Des fichiers complémentaires sont également fournis afin de tester les programmes, par exemple des images pour les exercices du chapitre « Traitement d’images ». https://dunod.com/EAN/9782100826063 Table des matières VII Avant-propos Cet ouvrage de la série « Exercices incontournables » traite de l’intégralité du nouveau programme d’informatique commun pour la première année des diffé- rentes filières de classes préparatoires aux grandes écoles en vigueur à partir de septembre 2021. Il sera suivi en juin 2022 d’un deuxième ouvrage qui intégrera le nouveau pro- gramme de 2e année. La première partie reprend la base de la programmation avec Python. Des rappels de cours et des exercices classiques vous permettront de vous familiariser avec la syntaxe Python. Dans le premier exercice de certains chapitres (« Terminaison-correction-com- plexité », « Graphes »), vous trouverez un rappel de cours détaillé présentant le vocabulaire utilisé. Pour chaque exercice classique, vous trouverez : • • La méthode de résolution expliquée et commentée étape par étape. • • Le corrigé rédigé détaillé. • • Les astuces à retenir et les pièges à éviter. Partie 1 Prise en main de Python Plan 1. Prise en main de Python 3 1.1 :  Assertion, moyenne, variance et écart-type d’une liste de nombres 3 1.2 : Boucles, test, fonctions (banque PT 2015) 10 1.3 : Variables locales, variables globales 13 2. Tableaux numpy − Slicing 15 2.1 : Manipulations de listes et de tableaux numpy 15 2.2 :  Affectation, objet immuable, copie de listes et de tableaux 18 2.3 :  Passage par référence pour les listes et les tableaux numpy, effet de bord 23 2.4 : Slicing, tranche, range, np.arange, np.linspace 26 3. Graphiques 29 3.1 : Tracé d’une fonction avec matplotlib 29 3.2 : Tracé d’un histogramme avec matplotlib 33 3 1 Prise en main de Python On considère la liste de nombres : L = [9, 10, 11, 20.5, 0, 12.0, -5, -8.3e1]. 1. Écrire une fonction rec_moy qui admet comme argument L une liste non vide de nombres et retourne la moyenne de L. 2. Écrire une fonction rec_variance qui admet comme argument L une liste non vide de nombres et retourne la variance de la liste L. 3. Écrire une fonction rec_ecart_type qui admet comme argument L une liste non vide de nombres et retourne l’écart-type de la liste L. 4. Les en-têtes des fonctions peuvent être annotés pour préciser les types des paramètres et du résultat. Ainsi, def uneFonction(n:int, X:[float], c:str, u) -> np.ndarray: signifie que la fonction uneFonction prend quatre paramètres n, X, c et u, où n est un entier, X une liste de nombres à virgule flottante et c une chaîne de caractères ; le type de u n’est pas précisé. Cette fonction renvoie un tableau numpy. Écrire une fonction rec_moy2 qui admet comme argument L une liste non vide de nombres réels ou flottants et retourne la moyenne de la liste L. Annoter l’en-tête de la fonction pour préciser le type des données attendues en entrée et fournies en retour. Utiliser des assertions pour vérifier le type de L, le nombre d’éléments de L ainsi que le type des éléments de L. Exercice 1.1 :  Assertion, moyenne, variance et écart-type d’une liste de nombres Analyse du problème On utilise une boucle for pour parcourir les différents éléments de la liste. On peut alors calculer la somme des éléments de la liste pour en déduire la valeur moyenne. Une assertion est une aide de détection de bugs dans les programmes. La levée d’une assertion entraîne l’arrêt du programme. Partie 1 · Prise en main de Python 4 Cours : L’installation de Python 3 peut se faire très facilement avec la suite Anaconda 3. L’éditeur Spyder s’installe automatiquement avec Anaconda. Un script Python est formé d’une suite d’instructions. Une instruction simple est contenue dans une seule ligne. Si une instruction est trop longue pour tenir sur une ligne ou si on sou- haite améliorer la lisibilité du code, le symbole « \ » en fin de ligne permet de poursuivre l’écriture de l’instruction sur la ligne suivante (voir corrigé 4). Une affectation se fait avec l’instruction n = 3 : n prend la valeur 3 (voir exercice 2.2 « Affectation, objet immuable, copie de listes et de tableaux » dans le chapitre « Tableaux numpy − Slicing »). On peut utiliser « _ » dans le nom des variables mais pas « - ». Le symbole dièse permet d’ajouter des annotations dans les programmes Python : # commentaire sur le programme. Le type d’une variable n s’obtient avec l’instruction : type(n). Les types de base des variables dans Python sont : • • Nombres entiers (positifs ou négatifs) : int • • Nombres à virgule flottante (ou nombres flottants) : float Exemple a = -3.2e2 : -3,2 × 102 = -320 • • Nombres complexes : complex Exemple a = 3j b = 1j Les nombres complexes sont écrits avec un « j » pour la partie imaginaire. • • Booléens : bool Les variables booléennes sont True (vrai) et False (faux). Opérations de base : +, -, *, / n // 10 : quotient de la division euclidienne de n par 10 n % 10 : reste de la division euclidienne de n par 10 n ** 3 : n puissance 3 Opérateurs : a == b : cet opérateur compare a et b. Si a = b, Python retourne True, sinon False. a != b : a différent de b a > b, a < b, a >= b, a <= b : strictement supérieur, strictement inférieur, supé- rieur ou égal, inférieur ou égal or : ou and : et not : non Les types de base des conteneurs dans Python sont : • • Chaînes de caractères : str s = "C'est une phrase" : utilisation de guillemets " s = 'phrase' : utilisation d’apostrophes ' Chapitre 1 · Prise en main de Python 5 s[0] : affiche 'p'. Le premier caractère de s a pour indice 0. s[-1] : affiche le dernier caractère : 'e'. On pourrait écrire également s[5]. Pour extraire des caractères, voir exercice 2.4 « Slicing, tranche, range, np.arange, np.linspace » dans le chapitre « Tableaux numpy − Slicing ». • • Listes : list L = [] : crée une liste vide L.append(3) : ajoute 3 à la fin de la liste L. On obtient L = [3]. L.append(2) : ajoute 2 à la fin de la liste L. On obtient L = [3, 2]. x = L.pop() : supprime le dernier élément (ici 2) de la liste L. On récupère cet élément dans la variable x. x=L2.pop(i) : supprime l’élément situé à l’indice i de la liste L2. On récupère cet élément dans la variable x. L2.insert(i, x) : insère l’élément x à l’indice i de la liste L2 L3 = ['r', 3, 'te'] : crée la liste L3 contenant des chaînes de caractères et des entiers len(L3) : affiche la longueur de la liste L3 Pour extraire des éléments d’une liste, voir exercice 2.4 « Slicing, tranche, range, np.arange, np.linspace » dans le chapitre « Tableaux numpy − Slicing ». L=[2*i for i in range(5)] : on obtient [0, 2, 4, 6, 8] (création par compré- hension) L=[2,3]*3 : répétition de la liste [2, 3]. On a alors L=[2, 3, 2, 3, 2, 3]. • • Tuples : tuple Une fois le tuple créé, il ne peut pas être modifié. On peut créer un tuple avec uploads/Science et Technologie/ informatique-avec-python-prepas-1-annee-scientifiques.pdf

  • 25
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager