Introduction au langage python

1 Introduction

Le langage python est un langage développé à partir de 1990 par Guido van Rossum. C'est un langage multi-paradigme (impératif, objet, fonctionnel) et doté d'un typage dynamique fort, d'une gestion automatique de la mémoire par ramasse-miettes et d'un système de gestion d'exceptions. Il est sous licence libre proche de BSD.

Il a été conçu pour être très lisible, et notamment l'indentation permet de délimiter les blocs, au lieu d'utiliser des accolades comme en C ou Java.

1.1 Qui l'utilise ?

  • Industrial Light & Magic
  • ForecastWatch
  • Rackspace
  • NASA
  • Google

1.2 Différences et similitudes avec Java

Bien qu'orienté objet, python est très différent de Java. On peut noter les points suivants :

  • python est typé dynamiquement
  • python propose une encapsulation plus faible qu'en Java
  • python permet l'héritage multiple
  • python n'impose pas la déclaration des attributs dans les classes
  • python possède une librairie standard riche et une large palette d'extensions disponibles, comme Java
  • python est multi-plateforme, à partir du moment où un environnement python est installé
  • python n'utilise pas de pointeur explicitement, comme Java
  • en python toute méthode est par défaut virtuelle (ou abstraite pour Java)
  • la gestion des exceptions en python est proche de celle utilisé en Java

1.3 Quel environnement de programmation ?

Vous êtes libres d'utiliser l'éditeur/environnement de programmation de votre choix. Python est assez répandu pour être intégrer dans la plupart des éditeurs (Linux tout du moins). Pour ce TP particulier, une console et un simple éditeur texte suffise (Vi, gedit, nano, etc.). Il y a également un environnement livré par défaut avec python : IDLE. Par contre, pour la suite de la formation, nous utiliserons une extension de l'environnement de développement Eclipse, pydev.

2 Prise en main de python avec le tutorial officiel

La meilleure façon de prendre en main le langage python est de suivre son tutoriel officiel : http://docs.python.org/tutorial/index.html. Il est très complet et bien écrit. Bien que n'allant pas dans le détail de tous les aspects du langage, il sera largement suffisant pour nos besoins.

Pour aller plus loin dans la découverte du langage, vous pouvez consulter les sources suivantes :

Vous pouvez également consulter le support de cours.

Semi-auto-formation

Attention, contrairement à ce que nous avons pu faire en LCPOO l'année dernière, ce cours pose comme acquis votre connaissance de la programmation orientée objet avec Java. Ce cours est principalement construit autours de l'exploration du tutoriel officiel de python et donc sur votre capacité à être autonome dans votre tâche d'apprentissage. Le chargé de TP est présent toutefois pour vous aider et répondre à toutes vos questions (pertinentes).

3 Premiers scripts

Rendez-vous sur le tutoriel officiel python et consultez les sections suivantes :

  1. Whetting Your Appetite : pour lancer python dans différentes configurations
  2. Using the Python Interpreter : pour commencer à utiliser python en ligne de commande
  3. An Informal Introduction to Python : pour découvrir les types natifs de python
  4. More Control Flow Tools : pour découvrir les structures de contrôles (tests, boucles, etc.) et la définition de fonctions

Vous êtes maintenant prêts pour quelques petits exercices d'échauffement !

3.1 Exercice

Ecrire un programme qui construit une liste contenant la suite de Padovan jusqu'à un nombre limite passé en paramètre. Conservez ce programme dans un script exécutable.

3.2 Exercice

Écrivez un script qui recopie une chaîne (dans une nouvelle variable) en l'inversant. Ainsi par exemple, « zorglub » deviendra « bulgroz ».

3.3 Exercice

En partant de l'exercice précédent, écrivez un script qui détermine si une chaîne de caractères donnée est un palindrome (c'est-à-dire une chaîne qui peut se lire indifféremment dans les deux sens), comme par exemple « radar » ou « s.o.s ». Pour compliquer la tâche, améliorez votre script pour prendre en compte les ponctuations dans les phrases, comme par exemple " Tu l'as trop écrasé, César, ce Port-Salut ! "

3.4 Exercice

Ecrivez un programme qui recherche le plus grand élément présent dans une liste donnée. Par exemple, si on l'appliquait à la liste [32, 5, 12, 8, 3, 75, 2, 15], ce programme devrait afficher :

le plus grand élément de cette liste a la valeur 75.

4 Structures, modules et erreurs

Maintenant que vous êtes familier avec les éléments de base de python, nous pouvons survoler les concepts de structures de données, de modules (packages) et d'erreurs et d'exception. Bien que différents de Java, l'approche reste la même pour tous ces concepts.

Rendez-vous sur le tutoriel officiel python et consultez les sections suivantes :

  1. Data Structures : pour approfondir vos connaissances sur les structures de données
  2. Modules pour développer des programmes modulaires et utiliser des librairies existantes
  3. Input and Output : pour lire et écrire dans des fichiers
  4. Errors and Exceptions : pour gérer les erreurs et les exceptions

Vous êtes maintenant prêts pour quelques petits exercices d'entraînement !

4.1 Exercice

En vous inspirant de ce que vous avez fait l'année dernière en Java (cf. TP4), développer un programme de cryptage de fichier.

4.2 Exercice

Ecrivez un script qui compare les contenus de deux fichiers et signale la première différence rencontrée.

4.3 Exercice

Découpez une grande chaîne en fragments de 5 caractères chacun. Rassemblez ces morceaux dans l'ordre inverse. La chaîne doit pouvoir contenir des caractères accentués.

4.4 Exercice

Tâchez d'écrire une petite fonction trouve() qui fera exactement le contraire de ce que fait l'opérateur d'indexage (c'est-à-dire les crochets [ ] ). Au lieu de partir d'un index donné pour retrouver le caractère correspondant, cette fonction devra retrouver l'index correspondant à un caractère donné. En d'autres termes, il s'agit d'écrire une fonction qui attend deux arguments : le nom de la chaîne à traiter et le caractère à trouver. La fonction doit fournir en retour l'index du premier caractère de ce type dans la chaîne. Ainsi par exemple, l'instruction :

print trouve("Juliette & Roméo", "&") 

devra afficher : 9

/Attention : Il faut penser à tous les cas possibles. Il faut notamment veiller à ce que la fonction valeur particulière (par exemple la valeur -1) si le caractère recherché n'existe pas dans la chaîne traitée. Vous pouvez également gérer des exceptions. Les caractères accentués doivent être acceptés.

4.5 Exercice

Dans un conte américain, huit petits canetons s'appellent respectivement : Jack, Kack, Lack, Mack, Nack, Oack, Pack et Qack. Écrivez un petit script qui génère tous ces noms à partir des deux chaînes suivantes :

prefixes = 'JKLMNOP'
suffixe =  'ack'

Si vous utilisez une instruction for ... in ... , votre script ne devrait comporter que deux lignes.

5 Classes, héritage et librairie standard

Jusqu'à présent nous n'avons pas développé de classes en tant que telles. Cette partie du TP va se focaliser sur la programmation orientée objet en python et également sur la librairie standard de python (équivalent de l'API Java standard).

Rendez-vous sur le tutoriel officiel python et consultez les sections suivantes :

  1. Classes : pour découvrir toutes les facettes de la programmation orientée objet en python (définition, héritage, importation, etc.)
  2. Brief Tour of the Standard Library : pour découvrir de nombreuses librairies utiles (accès au système de fichier, mathématiques, etc.)
  3. Brief Tour of the Standard Library – Part II : pour découvrir des fonctionnalité avancées comme le multi-threading ou la console de log.

Pour plus de détails sur les concepts objets, nous vous conseillons également de consulter les chapitres 11 et 12 de l'ouvrage Apprendre à programmer avec Python de Gérard Swinnen.

5.1 Exercice

Effectuer les exercices 12.5 à 12.9 du livre Apprendre à programmer avec Python (pages 181-182). Vous aurez de quoi faire…


Gauthier Picard, October 2012