I. Python en mode interactif▲
Nous avons vu comment Python peut s'utiliser en mode interactif en le lançant dans un terminal par la commande python.
JPh@ubuntu:~$ python
Python 2.7.7 |Anaconda 2.0.1 (64-bit)| (default, Jun 2 2014, 12:34:02)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-54)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://binstar.org
>>>C'est pratique pour utiliser Python comme une calculatrice ou pour programmer des algorithmes simples. Mais :
- l'environnement de calcul est assez pauvre ;
- le mode interactif ne permet pas de développer des programmes complexes : à chaque utilisation, il faut réécrire le programme. La modification d'une ligne oblige à réécrire toutes les lignes qui la suivent. Pour développer un programme plus complexe, on saisit son code dans un fichier texte (avec une extension .py en principe) : plus besoin de tout retaper pour modifier une ligne, plus besoin de tout réécrire à chaque lancement.
Toutefois, il existe un environnement interactif beaucoup plus riche nommé IPython (commande ipython) :
JPh@ubuntu:~$ ipython
Python 2.7.7 |Anaconda 2.0.1 (64-bit)| (default, Jun 2 2014, 12:34:02)
Type "copyright", "credits" or "license" for more information.
IPython 2.1.0 -- An enhanced Interactive Python.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://binstar.org
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.In [1]: a=15
In [2]: print a
15
In [3]: str = "bonjour l'univers"La commande %whos produit l'affichage des variables :
In [4]: %whos
Variable Type Data/Info
----------------------------
a int 15
str str bonjour l'univershelp() lance l'aide interactive :
In [6]: help()
Welcome to Python 2.7! This is the online help utility.
If this is your first time using Python, you should definitely check out
the tutorial on the Internet at http://docs.python.org/2.7/tutorial/.
Enter the name of any module, keyword, or topic to get help on writing
Python programs and using Python modules. To quit this help utility and
return to the interpreter, just type "quit".
To get a list of available modules, keywords, or topics, type "modules",
"keywords", or "topics". Each module also comes with a one-line summary
of what it does; to list the modules whose summaries contain a given word
such as "spam", type "modules spam".
help>Dans l'aide interactive, keywords retourne les mots-clefs réservés (à ne pas utiliser pour la définition d'une variable, d'une fonction, d'une classe…).
help> keywords
Here is a list of the Python keywords. Enter any keyword to get more help.
and elif if print
as else import raise
assert except in return
break exec is try
class finally lambda while
continue for not with
def from or yield
del global passOn obtient une description d'un mot-clef donné en le saisissant, par exemple : help> while produit ce résultat (touche q pour quitter) :
The ``while`` statement
***********************
The ``while`` statement is used for repeated execution as long as an
expression is true:
while_stmt ::= "while" expression ":" suite
["else" ":" suite]
This repeatedly tests the expression and, if it is true, executes the
first suite; if the expression is false (which may be the first time
it is tested) the suite of the ``else`` clause, if present, is
executed and the loop terminates.
A ``break`` statement executed in the first suite terminates the loop
without executing the ``else`` clause's suite. A ``continue``
statement executed in the first suite skips the rest of the suite and
goes back to testing the expression.
(END)Voir aussi : www.python.org/doc/
II. Écrire un programme Python▲
Le programme s'écrit dans un fichier texte que l'on sauvegarde avec l'extension .py. Le lancement du programme peut se faire à partir d'un terminal par la commande python nomfichier.py.
Il est préférable d'utiliser un environnement de développement qui rassemble tous les outils nécessaires au programmeur pour développer des logiciels.
II-A. Environnement de programmation▲
Par exemple avec la distribution Anaconda, vous disposez d'un véritable environnement de programmation Python nommé Spyder (commande spyder dans le terminal) :
La suite Anaconda rassemble tout le nécessaire pour faire ses premiers pas en Python scientifique. L'environnement Spyder offre un éditeur de texte (avec notamment la coloration syntaxique), les interpréteurs interactifs Python et IPython, des fenêtres d'exploration de vos fichiers, variables, objets, des outils de débogage, etc.
Premier programme : le résultat apparaît dans la console en bas à droite après avoir lancé l'exécution :
III. La fonction input()▲
La fonction input() attend la saisie par l'utilisateur d'un nombre ou d'une chaîne de caractères, et retourne la valeur saisie. Une chaîne de caractères doit être saisie entre ' ' (guillemets simples) ou " " (guillemets doubles).
>>> s=input()
'une chaîne de caractères'
>>> print "vous avez saisi", s
vous avez saisi une chaîne de caractèresEn attendant d'écrire réellement votre premier programme, vous pouvez maintenant saisir vos commandes à partir de l'interpréteur Python intégré dans l'environnement Spyder.
On peut passer en argument à la fonction input() une chaîne de caractères qui sera affichée à l'écran.
>>> s = input('Saisissez une chaîne de caractères : ')
Saisissez une chaîne de caractères : 'ma chaîne'
>>> print "c'est :", s
c'est : ma chaîne
>>>La fonction input() renvoie une valeur du même type que celle saisie.
IV. La fonction raw_input()▲
Comme input(), raw_input() attend la saisie par l'utilisateur d'une valeur. Elle retourne toujours une valeur de type chaîne de caractères (str). La chaîne de caractères saisie n'a plus besoin d'être entre guillemets (' ' ou " ").
>>> r=raw_input(); s=raw_input()
3.1415
une chaîne sans apostrophe
>>> type(r)
<type 'str'>
>>> type(s)
<type 'str'>
>>> print r,s
3.1415 une chaîne sans apostrophe
>>>Bien entendu, vous ne pouvez pas effectuer de calcul sur les chaînes de caractères comme pour les nombres entiers ou réels.
>>> r
'3.1415'
>>> r*2
'3.14153.1415'
>>> r**2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'
>>>Mais on peut convertir la chaîne à l'aide des fonctions int() ou float() :
V. Type bool▲
Lorsque l'on saisit les conditions suivantes, les valeurs retournées peuvent prendre deux valeurs : True ou False. Elles sont de type booléen (bool).
Opérateurs de comparaison :
|
a |
a a une valeur strictement inférieure à celle de b |
|
a |
a a une valeur inférieure ou égale à celle de b |
|
a |
a et b ont même valeur |
|
a |
a et b ont des valeurs différentes |
et pareillement a > b et a >= b.
On peut effectuer des opérations logiques sur les booléens (par ordre de priorité) : or, and, not() :
>>> a = (1<=2)
>>> print a, type(a)
True <type 'bool'>
>>> b = (a==False)
>>> print b, type(b)
False <type 'bool'>
>>>
>>> a or b
True
>>> a and b
False
>>> not(a)
False
>>> not(b)
True
>>>>>> var = 'chaîne'
>>> var == "Chaîne"
False
>>> var != "Chaîne"
True
>>> not(var == "Chaîne")
True
>>> (1 == 1.00)
True
>>>La fonction suivante définit le connecteur logique xor (ou exclusif) :
>>> # Connecteurs logique xor : a xor b = a and not(b) or not(a) and b
... def xor(a, b) :
... return (a and not(b)) or (not(a) and b)
...
>>> xor(True, False), xor(False, True), xor(True, True), xor(False, False)
(True, True, False, False)V-A. Conversion en booléen : bool()▲
La fonction de conversion bool() convertit une valeur de n'importe quel type en un booléen, selon les règles suivantes :
- Un nombre int ou float est converti à
Trues'il est non nul, àFalsesinon. - Une chaîne de caractères str est convertie à
Truesi elle est non vide, àFalsesi c'est la chaîne vide :"".
VI. Structures de contrôles▲
Pour l'instant nous avons vu que Python est un langage de programmation impérative (un programme est une suite de lignes d'instruction), nous allons voir que c'est un langage de programmation structuré. Il reconnaît les structures de contrôles :
- une structure de test :
if... [elif] ... [else] - deux structures de boucles :
whileetfor
sans lesquelles les programmes ne s'exécuteraient que séquentiellement, ligne après ligne.
Nous allons commencer par voir la structure de boucle while puis la structure de test if [elif] [else].
Nous étudierons plus tard la deuxième structure de boucle for.
while et if nous suffisent pour programmer. Tandis que for et if ne suffisent pas. Cependant for est particulièrement pratique, surtout en Python !
VI-A. L'instruction while▲
L'instruction while permet de répéter une séquence d'instructions, en boucle, tant qu'une condition est vérifiée.
En général condition s'évalue en un booléen, par exemple :
True, a <= 0, (a == 0) and (b != -1)…
>>> x = 1.e10 # Notation scientifique x=1*10^10
>>> x
10000000000.0
>>> n=0
>>> while (2**n < x) :
... n = n+1
...
>>> print n-1, 2**(n-1), '<', x, '<=', 2**n
33 8589934592 < 10000000000.0 <= 17179869184
>>>Pour attendre la saisie d'une chaîne non vide :
>>> # Pour attendre la saisie d'une chaîne non vide
... while not(var) :
... var = raw_input('Entrez une chaîne de caractères non vide : ')
...
Entrez une chaîne de caractères non vide :
Entrez une chaîne de caractères non vide :
Entrez une chaîne de caractères non vide : OKOrganigramme d'une boucle while :
On l'écrit en langage algorithmique :
VI-B. Exemple : Écrire un nombre en base 16▲
Code Python :
a = input('Saisissez un entier')
while a > 0 :
print a % 16
a = a // 16En langage algorithmique :
Saisir un entier a
Tant que a > 0 faire :
écrire (a modulo 16)
a = [a / 16] ' division entièrePour comprendre son fonctionnement, modifions le code et regardons son exécution :
passage = 0
a = input('Saisissez un entier : ')
while a > 0 :
passage = passage + 1
print 'Passage', passage
print 'a modulo 16 :', a % 16
a = a // 16
print 'a devient a//16 :', a
print 'Sortie de la boucle'Lorsque (a > 0) est évalué à False, la boucle while s'arrête.
Amélioration du code (2e ébauche) :
a = input('Saisissez un entier :')
resultat = ''
while a > 0 :
resultat = str(a % 16) + ' ' + resultat
a = a // 16
print resultatL'exécution produit :
str() retourne la valeur de son paramètre convertie en chaîne de caractères.
Pour les chaînes de caractères, '+' est l'opération de concaténation : 'aaaa' + 'bbbb' s'évalue en la chaîne 'aaaabbbb'.
Attention, une boucle peut ne jamais se terminer, et provoquer une exécution sans fin : while True : print 'bonjour', provoque un affichage sans fin que l'on interrompt avec la combinaison CTRL+C.
VI-C. Structure de test▲
La condition est évaluée en booléen.
- Si elle a valeur
Truele premier bloc d'instruction est exécuté, le deuxième ne l'est pas, puis l'exécution du programme se poursuit. - Si elle a valeur
Falsele deuxième bloc d'instruction est exécuté (le premier ne l'est pas), puis l'exécution du programme se poursuit.
L'instructionelseest optionnelle.
VI-C-1. Structure de test if [else]▲
Code Python :
a = input('Saisissez un nombre')
if a >= 0 :
print a, 'est positif'
else :
print a, 'est negatif'En langage algorithmique :
Saisir un nombre a
Si a >= 0 faire :
écrire a, "est positif"
Sinon faire :
écrire a, "est négatif"VI-C-2. Structure de test if [elif] [else]▲
L'écriture de tests imbriqués :
if condition1 :
# Bloc d'instructions 1
else :
if condition2 :
# Bloc d'instructions 2
else :
# Bloc d'instructions 3s'écrit à l'aide d'une seule structure de test :
if condition1 :
# Bloc d'instructions 1
elif condition2 :
# Bloc d'instructions 2
else :
# Bloc d'instructions 3elif et else sont optionnels. elif peut être utilisé plusieurs fois dans une structure de test : if ... elif ... elif ... else ....








