NOTICE
All files on this site have been moved to http://www.wikilivres.ca. All future contributions to Wikilivres should be made there.
This site will be closed on June 6th, 2012.
Index:Swinnen - Apprendre Python, 2010.djvu
Free texts and images.
| Title | Apprendre à programmer avec Python 3 |
|---|---|
| Author | Gérard Swinnen |
| Scans | djvu |
Pages
Préface: V VI VII VIII IX X XI XII
Remerciements: XIII
Sommaire: XV XVI XVII XVIII XIX XX XXI XXII
- 1 2 3 4 5 6 7 8 9
- 11 12 13 14 15 16 17 18 19
- 21 22 23 24 25 26
- 27 28 29 30 31 32 33 34
- 37 38 39 40 41 42 43 44 45
- 49 50 51 52 53 54 55 56 57
- 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
- 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
- 111 112 113 114 115 116 117 118 119 120 121 122
- 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
- 169 170 171 172 173 174 175 176 177
- 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194
- 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220
- 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264
- 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285
- 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310
- 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338
- 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368
- 371 372
- 373
- 437
</div>
</noinclude>
Table des matières
| Boîtes noires et pensée magique | 1 |
| Magie blanche, magie noire | 3 |
| La démarche du programmeur | 4 |
| Langage machine, langage de programmation | 5 |
| Édition du code source - Interprétation | 6 |
| Mise au point d’un programme - Recherche des erreurs (debug) | 7 |
| Erreurs de syntaxe | 7 |
| Erreurs sémantiques | 8 |
| Erreurs à l’exécution | 8 |
| Recherche des erreurs et expérimentation | 9 |
| Calculer avec Python | 11 |
| Données et variables | 13 |
| Noms de variables et mots réservés | 14 |
| Affectation (ou assignation) | 14 |
| Afficher la valeur d’une variable | 16 |
| Typage des variables | 17 |
| Affectations multiples | 17 |
| Opérateurs et expressions | 18 |
| Priorité des opérations | 19 |
| Composition | 19 |
| Séquence d’instructions | 21 |
| Sélection ou exécution conditionnelle | 22 |
| Opérateurs de comparaison | 23 |
| Instructions composées – blocs d’instructions | 24 |
| Instructions imbriquées | 24 |
| Quelques règles de syntaxe Python | 25 |
| Les limites des instructions et des blocs sont définies par la mise en page | 25 |
| Instruction composée : en-tête, double point, bloc d’instructions indenté | 25 |
| Les espaces et les commentaires sont normalement ignorés | 26 |
| Ré-affectation | 27 |
| Répétitions en boucle – l’instruction while | 28 |
| Commentaires | 29 |
| Remarques | 29 |
| Élaboration de tables | 30 |
| Construction d’une suite mathématique | 30 |
| Premiers scripts, ou comment conserver nos programmes | 31 |
| Problèmes éventuels liés aux caractères accentués | 34 |
| Les données numériques | 37 |
| Le type integer | 37 |
| Le type float | 39 |
| Les données alphanumériques | 41 |
| Le type string | 41 |
| Remarques | 42 |
| Triple quotes | 42 |
| Accès aux caractères individuels d’une chaîne | 42 |
| Opérations élémentaires sur les chaînes | 43 |
| Les listes (première approche) | 45 |
| Affichage:la fonction print() | 49 |
| Interaction avec l’utilisateur:la fonction input() | 50 |
| Remarque importante | 50 |
| Importer un module de fonctions | 50 |
| Un peu de détente avec le module turtle | 53 |
| Véracité/fausseté d’une expression | 54 |
| Révision | 56 |
| Contrôle du flux – utilisation d’une liste simple | 56 |
| Boucle while – instructions imbriquées | 57 |
| Définir une fonction | 61 |
| Fonction simple sans paramètres | 62 |
| Fonction avec paramètre | 64 |
| Utilisation d’une variable comme argument | 64 |
| Remarque importante | 65 |
| Fonction avec plusieurs paramètres | 65 |
| Notes | 66 |
| Variables locales, variables globales | 66 |
| Vraies fonctions et procédures | 68 |
| Notes | 69 |
| Utilisation des fonctions dans un script | 70 |
| Notes | 71 |
| Modules de fonctions | 72 |
| Typage des paramètres | 77 |
| Valeurs par défaut pour les paramètres | 77 |
| Arguments avec étiquettes | 78 |
| Interfaces graphiques (GUI) | 81 |
| Premiers pas avec tkinter | 82 |
| Examinons à présent plus en détail chacune des lignes de commandes exécutées | 82 |
| Programmes pilotés par des événements | 85 |
| Exemple graphique:tracé de lignes dans un canevas | 88 |
| Exemple graphique:deux dessins alternés | 91 |
| Exemple graphique : calculatrice minimaliste | 94 |
| Exemple graphique : détection et positionnement d’un clic de souris | 96 |
| Les classes de widgets tkinter | 97 |
| Utilisation de la méthode grid() pour contrôler la disposition des widgets | 99 |
| Composition d’instructions pour écrire un code plus compact | 102 |
| Modification des propriétés d’un objet - Animation | 105 |
| Animation automatique - Récursivité | 108 |
9. Manipuler des fichiers.
| Utilité des fichiers | 111 |
| Travailler avec des fichiers | 113 |
| Noms de fichiers – le répertoire courant | 113 |
| Les deux formes d’importation | 114 |
| Écriture séquentielle dans un fichier | 115 |
| Notes | 117 |
| Lecture séquentielle d’un fichier | 116 |
| Notes | 117 |
| L’instruction break pour sortir d’une boucle | 118 |
| Fichiers texte | 119 |
| Remarques | 120 |
| Enregistrement et restitution de variables diverses | 120 |
| Gestion des exceptions : les instructions try – except – else | 122 |
10. Approfondir les structures de données
| Le point sur les chaînes de caractères | 125 |
| Indiçage, extraction, longueur | 125 |
| Extraction de fragments de chaînes | 126 |
| Concaténation, répétition | 127 |
| Parcours d’une séquence : l’instruction for . in . | 128 |
| Appartenance d’un élément à une séquence : l’instruction in utilisée seule | 130 |
| Les chaînes sont des séquences non modifiables | 130 |
| Les chaînes sont comparables | 131 |
| La norme Unicode | 131 |
| Séquences d’octets : le type bytes | 133 |
| L’encodage Utf-8 . . . | 136 |
| Conversion (encodage/décodage) des chaînes | 137 |
| Conversion d’une chaîne bytes en chaîne string | 137 |
| Conversion d’une chaîne string en chaîne bytes | 137 |
| Conversions automatiques lors du traitement des fichiers | 138 |
| Cas des scripts Python | 139 |
| Accéder à d’autres caractères que ceux du clavier | 140 |
| Les chaînes sont des objets | 141 |
| Fonctions intégrées | 143 |
| Formatage des chaînes de caractères | 144 |
| Formatage des chaînes « à l’ancienne » | 145 |
| Le point sur les listes | 146 |
| Définition d’une liste – accès à ses éléments | 146 |
| Les listes sont modifiables | 147 |
| Les listes sont des objets | 148 |
| Techniques de slicing avancé pour modifier une liste | 149 |
| Insertion d’un ou plusieurs éléments n’importe où dans une liste | 149 |
| Suppression / remplacement d’éléments | 150 |
| Création d’une liste de nombres à l’aide de la fonction range() | 150 |
| Parcours d’une liste à l’aide de for, range() et len() | 151 |
| Une conséquence importante du typage dynamique | 152 |
| Opérations sur les listes | 152 |
| Test d’appartenance | 152 |
| Copie d’une liste | 153 |
| Petite remarque concernant la syntaxe | 154 |
| Nombres aléatoires – histogrammes | 155 |
| Tirage au hasard de nombres entiers | 157 |
| Les tuples | 158 |
| Opérations sur les tuples | 159 |
| Les dictionnaires | 160 |
| Création d’un dictionnaire | 160 |
| Opérations sur les dictionnaires | 161 |
| Test d’appartenance | 161 |
| Les dictionnaires sont des objets | 162 |
| Parcours d’un dictionnaire | 163 |
| Les clés ne sont pas nécessairement des chaînes de caractères | 164 |
| Les dictionnaires ne sont pas des séquences | 164 |
| Construction d’un histogramme à l’aide d’un dictionnaire | 166 |
| Contrôle du flux d’exécution à l’aide d’un dictionnaire | 167 |
11. Classes, objets, attributs
| Utilité des classes | 169 |
| Définition d’une classe élémentaire | 170 |
| Attributs (ou variables) d’instance | 172 |
| Passage d’objets comme arguments dans l’appel d’une fonction | 173 |
| Similitude et unicité | 174 |
| Objets composés d’objets | 175 |
| Objets comme valeurs de retour d’une fonction | 176 |
| Modification des objets | 177 |
12. Classes, méthodes, héritage.
| Définition d’une méthode | 179 |
| Définition concrète d’une méthode dans un script | 180 |
| Essai de la méthode, dans une instance quelconque | 181 |
| La méthode constructeur | 182 |
| Exemple | 182 |
| Espaces de noms des classes et instances | 186 |
| Héritage | 187 |
| Héritage et polymorphisme | 189 |
| Commentaires | 191 |
| Modules contenant des bibliothèques de classes | 194 |
13. Classes et interfaces graphiques.
| Code des couleurs : un petit projet bien encapsulé | 199 |
| Cahier des charges de notre programme | 200 |
| Mise en œuvre concrète. | 200 |
| Commentaires | 201 |
| Petit train : héritage, échange d’informations entre classes | 203 |
| Cahier des charges | 204 |
| Implémentation. | 204 |
| Commentaires | 205 |
| OscilloGraphe : un widget personnalisé | 207 |
| Expérimentation | 209 |
| Cahier des charges | 210 |
| Implémentation | 210 |
| Curseurs : un widget composite | 212 |
| Présentation du widget Scale | 212 |
| Construction d’un panneau de contrôle à trois curseurs | 213 |
| Commentaires | 215 |
| Propagation des événements | 217 |
| Intégration de widgets composites dans une application synthèse | 218 |
| Commentaires | 220 |
14. Et pour quelques widgets de plus.
| Les boutons radio | 227 |
| Commentaires | 228 |
| Utilisation de cadres pour la composition d’une fenêtre | 229 |
| Commentaires | 230 |
| Comment déplacer des dessins à l’aide de la souris | 231 |
| Commentaires | 233 |
| Widgets complémentaires, widgets composites | 235 |
| Combo box simplifié | 235 |
| Commentaires | 237 |
| Le widget Text assorti d’un ascenseur | 239 |
| Gestion du texte affiché | 239 |
| Commentaires | 241 |
| Le widget Canvas assorti d’un ascenseur | 242 |
| Commentaires | 244 |
| Application à fenêtres multiples – paramétrage implicite | 246 |
| Commentaires | 248 |
| Barres d’outils – expressions lambda | 249 |
| Métaprogrammation – expressions lambda | 251 |
| Passage d’une fonction (ou d’une méthode) comme argument | 252 |
| Fenêtres avec menus | 253 |
| Cahier des charges de l’exercice | 254 |
| Première ébauche du programme | 254 |
| Analyse du script | 255 |
| Ajout de la rubrique Musiciens | 257 |
| Analyse du script | 258 |
| Ajout de la rubrique Peintres | 258 |
| Analyse du script | 259 |
| Ajout de la rubrique Options | 260 |
| Menu avec cases à cocher | 261 |
| Menu avec choix exclusifs | 262 |
| Contrôle du flux d’exécution à l’aide d’une liste | 263 |
| Pré-sélection d’une rubrique | 264 |
15. Analyse de programmes concrets.
| Jeu des bombardes | 265 |
| Prototypage d’une classe Canon | 268 |
| Commentaires | 270 |
| Ajout de méthodes au prototype | 271 |
| Commentaires | 272 |
| Développement de l’application | 274 |
| Commentaires | 278 |
| Développements complémentaires | 279 |
| Commentaires | 283 |
| Jeu de Ping | 284 |
| Principe | 284 |
| Programmation | 285 |
| Cahier des charges du logiciel à développer | 285 |
16. Gestion d’une base de données
| Les bases de données | 291 |
| SGBDR - Le modèle client/serveur | 292 |
| Le langage SQL | 293 |
| SQLite | 294 |
| Création de la base de données. Objets « connexion » et « curseur ». | 294 |
| Connexion à une base de données existante | 296 |
| Recherches sélectives dans une base de données | 298 |
| La requête select | 300 |
| Ébauche d’un logiciel client pour PostgreSQL | 301 |
| Décrire la base de données dans un dictionnaire d’application | 302 |
| Définir une classe d’objets-interfaces | 305 |
| Commentaires | 307 |
| Construire un générateur de formulaires | 308 |
| Commentaires | 309 |
| Le corps de l’application | 309 |
| Commentaires | 310 |
17. Applications web
| Pages web interactives | 313 |
| Un serveur web en pur Python ! | 315 |
| Première ébauche : mise en ligne d’une page web minimaliste | 316 |
| Ajout d’une deuxième page | 318 |
| Présentation et traitement d’un formulaire | 319 |
| Analyse de la communication et des erreurs | 320 |
| Structuration d’un site à pages multiples | 321 |
| Prise en charge des sessions | 323 |
| Réalisation concrète d’un site web interactif | 326 |
| Le script | 328 |
| Les « patrons » HTML | 335 |
| Autres développements | 338 |
18. Communications à travers un réseau & Multithreading.
| Les sockets | 339 |
| Construction d’un serveur rudimentaire | 340 |
| Commentaires | 341 |
| Construction d’un client rudimentaire | 342 |
| Commentaires | 343 |
| Gestion de plusieurs tâches en parallèle à l’aide de threads | 343 |
| Client réseau gérant l’émission et la réception simultanées | 345 |
| Commentaires | 346 |
| Serveur réseau gérant les connexions de plusieurs clients en parallèle | 347 |
| Commentaires | 348 |
| Jeu des bombardes, version réseau | 349 |
| Programme serveur : vue d’ensemble | 350 |
| Protocole de communication | 351 |
| Remarques complémentaires | 353 |
| Programme serveur : première partie | 353 |
| Synchronisation de threads concurrents à l’aide de verrous (thread locks) | 356 |
| Utilisation | 357 |
| Programme serveur : suite et fin | 357 |
| Commentaires | 360 |
| Programme client | 360 |
| Commentaires | 363 |
| Conclusions et perspectives : | 364 |
| Utilisation de threads pour optimiser les animations | 364 |
| Temporisation des animations à l’aide de after() | 365 |
| Temporisation des animations à l’aide de time.sleep() | 366 |
| Exemple concret | 366 |
| Commentaires | 368 |
19. Installation de Python
| Sous Windows | 371 |
| Sous Linux | 371 |
| Sous Mac OS | 371 |
| Installation de Cherrypy | 371 |
| Installation de pg8000 | 372 |
20. Solutions des exercices
| 373 |
21. Licence associée à cet ouvrage
| 437 |
22. Index
| 443 |