[Python] - Chapitre 1

Ecrit par N-0-X, le 03 Sep 2005 dans la catégorie Programmation

Cet article est principalement dédié aux programmateurs n'ayant jamais touché au Python et voulant avoir un aperçu de ce langage interprété très rigoureux.
Dans un premier temps, nous verrons comment se servir de l'interpréteur Python, puis la manipulation des variables et la récupération de données entrées par un utilisateur, et enfin les conditions (if, while, for, etc.). En conclusion, je vous ferai un bref aperçu de l'importation de modules et de librairies.

L'interpréteur Python


Actuellement, sur la plupart des machines, le Python est intallé par défaut. Pour le vérifier, ouvrez un Invité de Commandes(si vous êtes sous Windows) ou une console (si vous êtes sous une distrib Unix-like) et tapez simplement python (s'il y a une erreur, déduissez-en que le Python n'est pas installé, et allez donc l'installer en cliquant ici).
Ne fermez pas votre terminal car c'est grâce à lui que l'on va pouvoir utiliser l'interpréteur. En effet, tapper python et voilà ce qui devrait s'afficher:

n0x@Debian-AMD64:~$ python
Python 2.3.5 (#2, May  5 2005, 10:59:31)
[GCC 3.3.5 (Debian 1:3.3.5-12)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

Il faut savoir, qu'à la base, le python n'était pas créé pour être un langage de programmation mais une simple calculatrice! Vous pouvez donc vous amuser à faire des calculs ("1+1" par exemple, si jamais vous avec un petit trou de mémoire) mais les calculs ne donnent qu'une valeur approchée du résultat réel (le module de maths a donc une vraie raison d'être). Pour le vérifier, divisez un nombre premier par un autre (23/5 retourne 4 par exemple).
Concernant l'interpréteur, je ne vais pas en écrire des pages et des pages car il agit exactement comme si l'on créait un programme à la seule différence près que les commandes (définitions et classes incluses, voir le chapitre suivant que je n'ai pas encore écris) ne pourront être sauvées et seront donc effacéés une fois l'interpéteur fermé. Au passage, pour fermer l'interpréteur, il ne sert à rien de taper "exit", "quit", "close" etc. il suffit de taper Ctrl+D (^D) qui signifie en ASCII "End of Text" (\x003).
Une chose très pratique dans l'interpréteur est la commande help(). En effet, lorsque vous programmerez en Python en important des modules, vous ne connaitrez probablement pas toutes les fonctions du module en question. Vous pourrez alors utiliser la commande help(module_ou_lib) pour afficher toute l'aide du module.

Les variables


Tout d'abord, il faut savoir que les commentaires en Python sont précédés d'un dièse ('#') et les commandes, s'il n'y en a qu'une seule par ligne, ne se termine pas avec un point-virgule.
Comme en C, les variables en Python n'ont pas de symbôles précédant leurs noms. De plus, le nom des variables doit commencer par une lettre ou un underscore ("_").
Pour donner une valeur à une variable, il suffit de la lui attribuer en mettant le nom de la variable suivi du symbole égal puis un nombre ou une chaine de caractères entre guillemets. Voici un petit récapitulatif sur les variables:

>>> 1_truc=2 # FAUX
  File "<stdin>", line 1
    1_truc=2 # FAUX
         ^
SyntaxError: invalid syntax
>>> _truc=1 # correct
>>> chaine_de_caracteres="une chaine quelconque"
>>> chaine1="truc"; chaine2="machin" # deux commandes successives, il y a donc un
point-virugle entre elles
>>>

Dans beaucoup de langages, il existe ce qu'on appelle des array qui sont des variables qui contiennent plusieurs valeurs à différentes positions. En Python, il existe la même chose, sauf qu'on appelle ceci des listes. Pour expliquer comment elles fonctionnent, je préfère donner un exemple:
>>> liste1=[] #on créé une liste vide
>>> liste2=['index0','index1','ainsi','de','suite'] # on peut créer une liste en lui
attribuant directement des éléments
>>> print liste2[0] #affiche 'index0' car on commence à compter à partir de 0 et non
à partir de 1, comme dans la plupart des langages de programmation
index0 >>> print liste2[4] suite >>> print liste2[5] # va afficher une erreur car cette liste n'a pas de valeur
en position 5
Traceback (most recent call last): File "<stdin>", line 1, in ? IndexError: list index out of range >>>

Cette erreur "index out of range" est très souvent due à l'appel d'une valeur d'une liste qui n'existe pas. Remarquez au passage que l'erreur est très précise puisque qu'elle indique la ligne et l'erreur (elle devrait aussi ajouter la Classe dans laquelle l'erreur s'est produite, mais ici je suis dans l'interpréteur et il n'y a ni classe ni définition, ce qui explique le point d'interrogation).

Manipulation de variables


Le Python, comme le Perl d'ailleurs, a plusieurs moyens natifs de manipulation des variables. Dans ce petit tutoriel, je ne vais pas parler de toutes les méthodes de manipulation des variables, seulement de quelques unes qui sont, à mon avis, les plus connues et les plus pratiques. Comme toutes les méthodes en Python, les méthodes de manipulation des variables s'emploient de la façon suivante: variable.methode(argument1[,argument2,etc.]). Je donnerai un exemple de toutes ces méthodes à la fin de cette section avec un listing.
Commençons par split() qui permet de séparer, dans une variable qui contient une chaine de caractères, les chaines de part et d'autre d'un ou plusieurs caractères. L'équivalent de cette fonction est explode() en php (enfin presque car vous verrez plus tard, dans l'exemple récapitulatif qu'il y a une différence).
Il y a aussi replace() qui permet de remplacer un certain nombre (que vous pouvez définir) d'occurences d'une chaine dans une variable par une autre chaine.
Concernant l'esthétique, il existe quelques méthode sympatiques telles upper() qui retourne la même chaine de caractères mais en lettres capitales, lower() qui est l'inverse de upper(), swapcase() qui transforme toutes les majuscules en miniscules (et vise-versa) et center() qui permet de centrer un texte dans un certain nombre d'espaces.
Voici le petit récapitulatif:

>>> ch1="une chaine de caracteres"
>>> ch1_split = ch1.split(' ') # mettez entre parantèses le caractère ou la chaine de
caractères qu'il faut trouver pour séparer la chaine d'origine
>>> print ch1_split ['une', 'chaine', 'de', 'caracteres'] >>> ch2 = "il y a beaucoup de e dans cette chaine et on va les remplacer par des a" >>> ch2_aucun_e = ch2.replace('e','a') # arg1 = chaine à remplacer;
arg2 = chaine de remplacement; arg3 = nombre de remplacements à faire (optionnel)
>>> print ch2_aucun_e il y a baaucoup da a dans catta chaina at on va las ramplacar par das a >>> ch2_moins_5_e = ch2.replace('e','a',5) # arg1 = chaine à remplacer;
arg2 = chaine de remplacement; arg3 = nombre de remplacements à faire (optionnel)
>>> ch2_moins_5_e 'il y a baaucoup da a dans catta chaine et on va les remplacer par des a' >>> ch3="une chaine en minuscules" >>> print ch3.upper() UNE CHAINE EN MINUSCULES >>> print ch4.lower() une chaine en majuscules >>> ch5 = "PaRlOnS uN pEu CoMmE dEs LeEtS" >>> print ch5.swapcase() pArLoNs Un PeU cOmMe DeS lEeTs >>> ch6 = "centrons ceci" >>> ch6.center(30) ' centrons ceci '

Pour trouver une liste de toutes les méthodes possible sur les variables, rendez-vous ici.
Avant de clore cette section sur la manipulation des chaines des caractères, si vous voulez sélectionner seulement les 5 premiers caractères d'une chaine, ou les 5 derniers etc. c'est très simple en Python:
>>> var = "0123456789"
>>> var[2:]
'23456789'
>>> var[:2]
'01'
>>> var[2:5]
'234'

Il suffit donc de mettre le numéro du caractère (on commence encore une fois par 0) puis ":" pour dire que l'on veut tout ce qui est après le caractère en question (non inclu). Si vous voulez l'inverse, et bien, c'est ":" puis le numéro du caractère. Enfin, si vous voulez la chaine comprise entre deux caractères, il suffit d'entrer le numéro du premier caractère voulu, puis ":", enfin le numéro du caractère final voulu.

Manipulation de listes


Comme pour les variables normales, on peut manipuler les listes en ajoutant et en retirant des éléments (par exemple), mais bien plus encore. Je vais procéder de la même façon que précédemment, c'est à dire que l'exemple sera enfin de section.
Commençons par append() qui permet, comme son nom l'indique en anglais, d'ajouter un élément à la fin de la liste.
Ensuite, une autre méthode connue est insert() qui permet d'insérer un élément à une position donnée.
remove() permet de supprimer la première occurence d'une valeur d'un élément (voir exemple).
pop() permet de supprimer l'élément de la position que vous spécifiez.
Enfin, une dernière méthode bien connue est count() qui permet de compter le nombre d'éléments identiques dans une liste.
Avant de mettre l'exemple, je précise que vous pouvez faire exactement comme pour les variables 'normale' si vous souhaitez en sélectionner une partie (voir la dernière ligne de l'exemple suivant):

>>> list1=['une','liste','banale','sauf','qu\'elle','contient','deux','fois',
'le','meme','mot','liste'] >>> list1.append('un element en plus') >>> print list1 ['une', 'liste', 'banale', 'sauf', "qu'elle", 'contient', 'deux', 'fois',
'le', 'meme', 'mot', 'liste', 'un element en plus'] >>> list1.insert(1,'deuxieme element') >>> print list1[1] #0 est le premier élément, 1 le second, etc. deuxieme element >>> list1.remove('deuxieme element') >>> print list1 ['une', 'liste', 'banale', 'sauf', "qu'elle", 'contient', 'deux', 'fois',
'le', 'meme', 'mot', 'liste', 'un element en plus'] >>> list1.pop(10) 'mot' >>> print list1 ['une', 'liste', 'banale', 'sauf', "qu'elle", 'contient', 'deux', 'fois',
'le', 'meme', 'liste', 'un element en plus'] >>> list1.count('liste') 2 >>> list1[5:] ['contient', 'deux', 'fois', 'le', 'meme', 'liste', 'un element en plus'] >>> list1[5:10] ['contient', 'deux', 'fois', 'le', 'meme'] >>>

Bien que certains pensent que les listes ne servent pas à grand chose (en tous cas, c'était mon impression lorsque j'ai commencé à apprendre le Python), je vous garanti que ce n'est pas du tout le cas. Je conseille de relire ce passage si vous ne l'avez pas entièrement compris.

Récupération de données utilisateurs


En Python, comme dans la plupart des langages, c'est fort simple, il suffit d'appeler une fonction: raw_input(). Vous avez le choix entre afficher un message puis faire appel à raw_input() ou simplement d'appeler raw_input avec, comme premier argument, le message (une question par exemple). Cette seconde méthode permet de ne pas avoir de retour chariot entre la question et la réponse. J'illustre dans l'exemple suivant les deux moyens:

>>> print "Bonjour. Quel est votre nom? "; nom1=raw_input()
Bonjour. Quel est votre nom?
N-0-X
>>> print nom1
N-0-X
>>> # et maintenant, la seconde méthode
...
>>> nom1=raw_input('Quel est votre nom? ')
Quel est votre nom? N-0-X
>>> print nom1
N-0-X
>>>

Les conditions


if, elif, else

Cette condition est sûrement l'une des plus répandue dans tous les langages de programmation. Elle permet de vérifier une simple condition. En Perl, Php, C, C++ (et j'en passe beaucoup), on écrit la condition entre parenthèses puis on ouvre une accolade pour que le programme sache quelles commandes exécuter si la condition est vérifiée. Le Python étant un langage très rigoureux dont le code est très lisible, au lieu de mettre une accolade, on met simplement un double-point (':') puis on retourne à la ligne (de préférence), puis on fait une indentation avant les commandes. Cette indentation est indispensable pour toutes les conditions si vous retournez à la ligne. Voici un exemple qui illustre trois façons d'employer une condition if, elif, else:

>>> var1 = "Machin"; var2= "Truc"; var3 = "Noxistes"
>>> if var1=="Truc":
...             print "var1 == \"Truc\""
...             print "Vous avez bien lu, var1 == \"Truc\""
... elif var2 == "noxistes.org": print "L'adresse du site est dans var2";print "Vous
avez aussi bien lu" ... elif len(var3) == len(var1): ... print "la fonction len() permet d'avoir la longueur d'une variable" ... else: ... print "Aucune condition n'est remplie" ... Aucune condition n'est remplie >>>

for

La condition for est aussi très répandue dans les langages de programmation. Elle permet de faire une boucle un certain nombre de fois. En python, pour faire ce certain nombre de fois, il faut utiliser la fonction range(nombre). Comme pour toutes les boucles (de même que pour les définitions et les classes que nous aborderons dans le chapitre suivant), les commandes de for doivent être précédées d'une indentation. Remarquez dans l'exemple suivant comment on affiche une variable qui n'est pas supposée être une chaine de caractères (ici un nombre, donc une int) grâce à %s puis la variable x qui est une int. Voici l'exemple plus ou moins compliqué:
>>> for x in range(len(liste)):
...             print "l'élément %s contient %s"% (x,liste[x])
...
l'élément 0 contient élément1
l'élément 1 contient élément2
l'élément 2 contient Noxistes
l'élément 3 contient et
l'élément 4 contient Python
l'élément 5 contient ça r0x
l'élément 6 contient etc.
l'élément 7 contient je ne sais pas
l'élément 8 contient quoi rajouter
>>>

while

while permet de boucler jusqu'à ce que la condition soit réalisée. On peut aussi créer une boucle infinie si une conditon est toujours fausse et ne se réalise jamais. Encore une fois, il faut une indentation avant les commandes de la boucle. Remarquez dans l'exemple suivant la façon d'ajouter 1 à une variable de type int (integer):
>>> while(nombre < 10):
...             print "Nombre est égal à %s" % nombre
...             nombre+=1 # ici 
...
Nombre est égal à 0
Nombre est égal à 1
Nombre est égal à 2
Nombre est égal à 3
Nombre est égal à 4
Nombre est égal à 5
Nombre est égal à 6
Nombre est égal à 7
Nombre est égal à 8
Nombre est égal à 9
>>>

Conclusion


Les libriaries et modules

Les libraries et les modules ont été créé pour vous faciliter la vie lorsque vous programmez, donc utilisez-les! Elles ont été codées par de très bons programmeurs Python. Pour s'en servir, il y a deux méthodes. La première est d'importer toute la librairie, et la seconde est de n'importer qu'une ou plusieurs fonctions de cette librairie.

import time # on a importé toute la libraire
from math import log # on n'a ici importé que la fonction log de la librairie math
#voyons à présent comment s'en servir en fonction de la façon dont on l'a importé
>>> print time.time() #on ajoute le 'time.' avant le nom de la fonction de la
librairie parce qu'on importé tout la lib
1125770998.84 >>> print log(4) #on n'ajoute pas 'math.' avant le nom de la fonction car on n'a
importé que la fonction
1.38629436112 >>>

La vraie conclusion

Comme vous avez pu le voir durant ce tutoriel, le Python est un langage rigoureux (avec les indentations notamment) mais très puissant grâce aux modules, à la rapidité, à la facilité et au débogage (grâce à l'indication des erreurs très précises). De plus, l'interpréteur est un outil très utile et donc fort pratique.

Je vous donne rendez-vous au prochain chapitre de ce tutoriel dans lequel vous y apprendrez les definitions (l'équivalent des fonctions[function truc(){}] dans beaucoup de langages) et les classes.
À la prochaine ;-)

Si vous avez un commentaire à faire à l'auteur de cet article, cliquez ici !