Algorithmie ISI301 TP 1 : Python et premiers algorithmes 1 Python

Algorithmie
ISI301
TP 1 : Python et premiers algorithmes
1 Python : apprentissage
Pour avoir une vision plus large des diff´erentes possibilit´es du langage Python,
nous ne pouvons que vous conseiller d’aller consulter le tutoriel Python disponible
`a l’adresse http://docs.python.org/tut/tut.html, ou encore http://www.
ceramiko.ch/python/main.html.
Dans le pr´esent TP nous ne vous pr´esenterons que les concepts de base de
python, concepts qui devraient vous permettre de r´ealiser les diff´erents algo-
rithmes demand´es. Effectuez toutes les manipulations propos´ees, histoire de
vous familiariser avec Python.
1.1 Interpr´eteur
Python est un langage interpr´et´e. Cela signifie que les programmes python n’ont
pas ˆetre compil´es avant d’ˆetre ex´ecut´es, mais qu’on doit les faire ex´ecuter par
un autre programme (l’interpr´eteur). Ceci apporte une certaine souplesse pour
effectuer rapidement des tests.
L’interp´eteur de python est le programme python. Si vous le lancez sans
param`etre, il va passer en mode interactif et vous permettre d’´evaluer directe-
ment des commandes. Sinon, il va chercher `a ex´ecuter le contenu du fichier
pass´e en param`etre.
Les manipulations que nous indiquons ci-dessous peuvent tout `a fait ˆetre
ex´ecut´ees dans l’interp´eteur python standard. Cependant, nous vous conseillons
d’utiliser idle, une petite interface graphique fournie en standard avec python.
Une fois la commande idle lanc´ee, vous devez vous retrouver devant une invite
de commande (prompt pour les anglicistes) :
>>>
Vous pouvez alors entrer directement des commandes. Lorsque vous com-
mencerez `a entrer des fonctions (sur plusieurs lignes), il sera alors utile de passer
par un fichier. Pour cela, cr´eez depuis le menu File un nouveau fichier, et entrez
les commandes python `a l’int´erieur. Pour interpr´eter son contenu, il suffit de le
1
sauvegarder (m´emorisez le raccourci-clavier contrˆole-s) et de l’ex´ecuter avec la
touche F5.
Nous allons maintenant voir les principales structures de donn´ees disponibles
dans python (les nombres, les chaˆınes de caract`eres et les listes), ainsi que la
fa¸con de les manipuler via des variables.
1.2 Les nombres
Vous pouvez vous servir de python comme calculatrice, comme le montre l’exemple
suivant (tir´e du tutoriel) :
>>> 2+2
4
>>> # Introduit un commentaire
... 2+2
4
>>> 2+2 # et un commentaire sur la m^eme ligne de code
4
>>> (50-5*6)/4
5
>>> # Les divisions enti`eres retournent des entiers
... 7/3
2
>>> 7/-3
-3
Pour les divisions non enti`eres, il faut manipuler des r´eels :
>>> 7/3
2
>>> 7.0 / 3
2.3333333333333335
>>> 7 / 3.0
2.3333333333333335
>>> 1.0 * 7/3
2.3333333333333335
Les variables sont affect´ees avec le signe ’=’. Ainsi la commande >>> x=42
affecte la valeur 42 `a la variable x. On peut alors la manipuler comme le montre
l’exemple suivant :
>>> x
42
>>> x*2
84
>>> x**2 # x au carr´e
1764
2
1.3 Chaˆınes de caract`eres et listes
1.3.1 Chaˆınes
Les chaˆınes de caract`eres sont entr´ees en les entourant des caract`eres ou ". La
diff´erence entre ces deux notations est au niveau de l’interpr´etation de caract`eres
sp´eciaux tels que \n (retour `a la ligne) ou \t (tabulation). Essayez d’entrer les
chaˆınes suivantes, pour voir la diff´erence de traitement :
"Une seule ligne"
’Une seule ligne’
"Plusieurs\nlignes ?"
’Plusieurs\nlignes ?’
Remarquez la diff´erence entre la chaˆıne de caract`ere et son impression via la
commande print.
On peut ´egalement utiliser les d´elimiteurs ’’’ ou """, ce qui permet d’entrer
facilement des chaˆınes de caract`eres multilignes, ou contenant les caract`eres
ou "(comme du code HTML par exemple) :
code_html="""<html>
<head><title>Test</title></head>
<body background="white">
<h1 align="center">Titre</h1>
</body>
</html>"""
Les op´erateurs +et *sont utilisables avec des chaˆınes de caract`eres, ce qui
est extrˆemement pratique pour ´ecrire des punitions :
>>> ’je ne copie pas sur mon voisin\n’*10
’je ne copie pas sur mon voisin\nje ne copie pas sur mon voisin\nje ne
copie pas sur mon voisin\nje ne copie pas sur mon voisin\nje ne copie
pas sur mon voisin\nje ne copie pas sur mon voisin\nje ne copie pas
sur mon voisin\nje ne copie pas sur mon voisin\nje ne copie pas sur
mon voisin\nje ne copie pas sur mon voisin\n’
>>> print ’je ne copie pas sur mon voisin\n’*10
je ne copie pas sur mon voisin
je ne copie pas sur mon voisin
je ne copie pas sur mon voisin
je ne copie pas sur mon voisin
je ne copie pas sur mon voisin
je ne copie pas sur mon voisin
je ne copie pas sur mon voisin
je ne copie pas sur mon voisin
je ne copie pas sur mon voisin
je ne copie pas sur mon voisin
Ou encore :
3
>>> debut="je ne copie pas sur "
>>> voisin=’Toto’
>>> print (debut + voisin + ’\n’) * 10
je ne copie pas sur Toto
je ne copie pas sur Toto
je ne copie pas sur Toto
je ne copie pas sur Toto
je ne copie pas sur Toto
je ne copie pas sur Toto
je ne copie pas sur Toto
je ne copie pas sur Toto
je ne copie pas sur Toto
je ne copie pas sur Toto
Notez que le caract`ere %est particulier dans les chaˆınes de caract`eres, il sert
`a ins´erer des valeurs (avec une syntaxe identique `a printf en C) dans la chaˆıne.
nom="Souchon"
age=10
phrase="%s a %d ans" % (nom, age)
print phrase
1.3.2 Listes
Une liste est une suite de donn´ees. Le premier ´el´ement de la liste est `a l’indice
0. Python comprend ´egalement les indices n´egatifs, l’indice -1 correspondant au
dernier ´el´ement de la liste.
Enfin, il est possible d’obtenir des morceaux de listes en utilisant l’op´erateur
’:’. Tout devrait vous paraˆıtre plus clair avec l’exemple ci-dessous (lui aussi tir´e
du tutoriel) :
>>> a = [’spam’, ’eggs’, 100, 1234]
>>> a
[’spam’, ’eggs’, 100, 1234]
>>> a[0]
’spam’
>>> a[3]
1234
>>> a[-2]
100
>>> a[1:-1]
[’eggs’, 100]
>>> a[:2] + [’bacon’, 2*2]
[’spam’, ’eggs’, ’bacon’, 4]
>>> 3*a[:3] + [’Boo!’]
[’spam’, ’eggs’, 100, ’spam’, ’eggs’, 100, ’spam’, ’eggs’, 100, ’Boo!’]
La fonction len() renvoie la taille de la liste :
4
>>> a=[1, 2, 3]
>>> len(a)
3
>>> a[:len(a)]
[1, 2, 3]
Les chaˆınes de caract`eres pouvant ˆetre trait´ees comme des listes, les diff´erentes
fa¸cons de manipuler les listes vues pr´ec´edemment fonctionnent ´egalement avec
elles. La diff´erence fondamentale entre chaˆınes et listes est que les chaˆınes sont
immutables alors que les listes sont mutables. Ceci signifie que l’on ne peut pas
modifier un caract`ere d’une chaˆıne alors que l’on peut le faire avec un tableau.
Ainsi :
>>> a=[1,2,3]
>>> a[1]=a[1]*2
>>> a
[1, 4, 3]
est valide alors que :
>>> a=’coucou’
>>> a[1]=’x’
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: object does not support item assignment
produit une erreur.
1.4 Conditions et Boucles
Plutˆot qu’un long discours voici les exemples donn´es dans le tutoriel concer-
nant les instructions de conditions et de boucles. Vous devriez ˆetre capable de
comprendre tout seul leur fonctionnement.
Quelques pr´ecisions tout de mˆeme. La d´efinition des limites des structures
de contrˆole en python est diff´erente de celle en Java ou en C, qui utilisent des
accolades. Elle se fait en python grˆace `a la seule indentation. Cela peut paraˆıtre
surprenant au premier abord mais c’est en fait tr`es naturel, et une fois que l’on
y a goˆut´e on ne peut plus s’en passer. Les ´editeurs de code ´evolu´es (emacs, vi,
IDLE, etc) se chargent d’ailleurs d’indenter le code automatiquement lors de la
saisie.
Toute ligne pr´ec´edant un nouveau bloc doit ˆetre termin´ee par le caract`ere :.
Note : comme pr´ecis´e dans la section 1.1, nous vous conseillons si ce n’´etait
pas encore le cas d’´editer votre code dans l’´editeur d’IDLE, et de lancer son
ex´ecution via la touche F5.
1.4.1 if/else et while
Tout comme en C, tout entier non nul est consid´er´e comme vrai, et 0 est con-
sid´er´e comme faux.
5
1 / 8 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !