Ceci est une ancienne révision du document !
Sessions Python - 1
Introduction
Python est né au début des années 1980, son père est Guido van Rossum. Sa version actuelle est la 2.5.1.
Python est présent partout, vous l'utilisez tous les jours avec Ubuntu, red hat en use et abuse, de même que google (van Rossum est employé par Google). Vous avez aussi très certainement vu python en action avec Launchpad.
Ce cours est une introduction au langage, en abordant certaines notions de base de la programmation. Le but est d'être clair pour les gens qui n'ont jamais programmé, donc certains "pythonismes" seront volontairement mis de côté. On approfondira dans d'autres sessions.
L'interpréteur de commandes
Python est un langage "interprété", c'est à dire qu'un script ne nécessite pas de compilation pour être exécuté. Il existe un interpréteur qui permet d'interagir avec l'utilisateur. Pour le lancer, démarrez un terminal et lancez :
python
Commençont par une utilisation très simple, en faisant faire du calcul à python :
3*6 4-9
Notion de variable
Les variables correspondent à des zones de stockage de valeurs. Elles sont désignées par des mots contenant les lettres minuscules, majuscules, chiffres et underscore "_". Une variable ne peut avoir un nom commençant par un chiffre.
A une variable on assigne une valeur grâce à l'instruction "=", par exemple (dans l'interpréteur) :
a = 4 b = 5 a + b
Les valeurs contenues par les variables a et b ont été utilisées pour réaliser l'opération.
Une variable doit avoir été initialisée pour être utilisée :
c c = 1 c
La première et la troisème instruction sont identiques, mais le résultat diffère suivant l'initialisation.
Une variable peut "dépendre" d'elle même :
a = 4 a = a + 1 a
Attention à la casse ! 'A' est différent de 'a'.
Notion de type
On n'a utilisé que des entiers pour l'instant. python l'a remarqué :
a = 5 a / 2
On obtient 2, et pas 2.5. Pourquoi ? python arrondi tout simplement à l'entier inférieur car on lui a suggéré que a est un entier. Comment faire alors ? Préciser à python que a est un "flottant" :
a = 5.0 a / 2
Un autre type très courant est la "chaîne de caractère" (string en anglais). Elle est définie en plaçant du texte entre "" ou entre :
une_chaine = "Je suis une chaine."
une_chaine
On peut 'ajouter' des chaînes, on appelle ça la concaténation:
a = "Bonjour "
b = "Monde !"
a + b
Pour mettre le doigt sur une possible confusion, essayons ceci :
a = 1
a
b = "1"
b
Notez la différence entre les 2 résultats. La première fois python affiche un entier, la seconde une chaîne de caractères (entre
).
a+b
Une erreur résulte de ce calcul, puisque a et b sont de type différents.
Premier script
Un des intérêts d'un programme est de pouvoir interagir avec l'utilisateur. On va voir pour ça deux instructions et comment les utiliser :
- raw_input() permet de demander à l'utilisateur de saisir un texte (texte au sens large, on commencera avec des nombres) ;
- print permet d'afficher du texte.
Ce sont deux fonctions, qui utilisent un ou plusieurs arguments (des données qu'elles traiteront). Nous aborderons les fonctions un peu plus loin.
raw_input() s'utilise de cette manière :
resultat = raw_input("Veuillez saisir quelque chose : ")
La chaîne de caractère sera affichée à l'écran, et le curseur attendra que l'utilisateur saisisse du text puis <entrée>. Ce qui a été saisi sera alors assigné à la variable résultat
(en tant que chaîne de caractère).
Pour ensuite afficher ce texte on peut utiliser :
print "Du texte qui ne change pas et autre chose :", resultat
Les éléments à afficher sont séparés par une virgule, qui apparaitre comme un simple espace lors de l'exécution.
"Du texte qui ne change pas et autre chose :" et resultat
sont deux arguments de la fonction print
.
Regardons maintenant cet exemple :
#!/usr/bin/env python # -*- coding: UTF8 -*- # On demande le nom nom = raw_input("Quel est votre nom ? ") # On demande le prénom prenom = raw_input("Quel est votre prénom ? ") # On affiche le tout print "bonjour", prenom, nom
Quelques petites remarques :
- les lignes qui commencent par '#' ne sont pas lues par python, ce sont des lignes de commentaires. Elle sont utiles pour détailler certains éléments de votre script ;
- la première ligne est un 'shebang', qui permet à votre shell que savoir avec quel programme lancer votre script lorsqu'il est exécutable (./exemple1.py) ;
- la seconde définit l'encodage, c'est essentiel pour nous francophones qui utilisont des accents (python n'aime pas vraiment les accents sans encodage précisé).
Copiez ce script dans un fichier exemple.py
et exécutez :
python exemple.py
En guise d'exercice, ecrivez un script qui demande l'âge de 2 personnes, et qui affiche la différence d'âge. Rappelez vous que raw_input() récupère une chaîne de caractère, qu'il faudrait transformer en entier pour faire le calcul. La fonction int
qui prend en argument une chaine de caratère, et retourne sa conversion en entier.
Conditions
Pour que le script réagisse suivant ce que l'utilisateur à saisi, on utilise des instructions de contrôle, if
et else
. Elle s'utilisent comme ceci :
if (une_condition_est_vraie): # on execute # une série # d'instructions else # sinon # on fait autre chose
La syntaxe est (je pense) assez claire, mais elle amène quelques nouvelles notions.
Les booléens
Une variable booléennes est une variable qui n'accepte que 2 valeurs : vrai ou faux (True ou False en python). On peut étendre ceci aux nombres et dire : si c'est 0 c'est faux, sinon (dans tous les autres cas), c'est vrai.
"une_condition_est_vraie" va donc être une expression qui sera soit vraie (ou non nulle), soit fausse (nulle). Si elle est vraie, on exécute la première partie de la condition (juste après if
, sinon la deuxième (ce qui suit else
).
L'indentation
Pour connaître toutes les instructions à exécuter si la condition est vraie, on définit un "bloc". Ce bloc est défini par une indentation (<tab> en général) :
# on execute # une série # d'instructions
Ce bloc sera exécuté si la condition est vérifiée.
Prenons un exemple de comparaison d'entiers :
a = 1 b = 2 if (a > b): print "a>b" else: print "b>a"
Quel sera le résultat du script ?
L'expression qui définit la condition est souvent une comparaison, qui utilise les symboles suivants :
>
et<
pour 'strictement supérieur/inférieur à'>=
et⇐
pour 'supérieur/inférieur ou égal à'==
et!=
pour 'égal à ou différent de'
Les conditions peuvent être multiples et inclure des or
et and
:
a or b
sera vraie si soit a, soit b est vraiea and b
sera vraie si a et b sont vraie
Vous pouvez maintenant reprendre l'exercice de tout à l'heure et systématiquement afficher un résultat positif.