Académique Documents
Professionnel Documents
Culture Documents
INFORMATIQUE
ET
ALGORITHMIQUE
avec le langage Python
polycopié de TP
Laboratoire IDM
version 3.2 - 2012-2013
Remerciements :
Merci à Laurent POINTAL (LIMSI), Georges VINCENTS (IUT Orsay), Ludovic CONDETTE
(AVANTIC Software), pour leurs remarques ayant contribué à l'amélioration de ce support de
TP.
Bibliographie
LUTZ et BAILLY, Mark et Yves, Python précis et concis, O’Reilly, 2e édition, 2005.
ZIADÉ, Tarek, Python : Petit guide à l’usage du développeur agile, Dunod, 2007.
Sites internet :
<http://python.developpez.com> : site d'entraide avec une FAQ, un forum, des aides, etc.
info - TP page 2
0 - Instructions générales
0.2 - Documentation
En salle de TP, vous trouverez dans les répertoires suivants :
Sur le bureau de l'ordinateur, dans le répertoire du TP en cours (Bureau/TP1 pour la
séance 1, Bureau/TP2 pour la séance 2, etc) : divers fichiers utiles pour le TP.
Dans le répertoire /opt/docs/ : de la documentation générale sur python.
Dans le répertoire /opt/scriptsTP/ : des scripts.
Sous Dokeos, vous trouverez des documents en vous inscrivant dans le cours :
IUT Orsay MPhy Sp2 Informatique Scientifique - Sabine Marduel
Sur internet, vous trouverez le manuel de référence Python à l'adresse suivante :
<http://docs.python.org> (liste de toutes les commandes python avec leur significa
tion)
0.4 - Le compte-rendu de TP
Pendant la séance de TP, certains exercices seront corrigés directement au tableau ; sauf indication
contraire de l'enseignant(e), ils ne seront donc pas à rendre. Il est malgré tout important de suivre
attentivement ces corrections car ces exercices permettent d'acquérir les notions indispensables.
L'énoncé du TP contient des tableaux vides à compléter, où vous devrez noter les résultats de
l'exécution de certaines commandes, tracer la valeur de certaines variables, etc : il pourra éven
tuellement être relevé à certaines séances, et comptera alors dans la note du TP.
Le compte rendu de TP (à rendre par binôme) devra contenir :
- nom, prénom, groupe du binôme, date, numéro de la séance de TP, numéro du poste infor
matique utilisé.
- réponses aux exercices signalés dans l'énoncé du TP.
- algorithmes demandés dans l'énoncé du TP.
- impressions papier des programmes python demandés dans l'énoncé du TP.
Ce compte-rendu de TP pourra être rédigé à la main sur feuille, ou bien sur traitement de texte,
comme vous préférez (sachez que la rédaction à la main permet de gagner du temps car elle évite
de bloquer l'ordinateur pendant la rédaction). Si nécessaire, vous pourrez aussi faire des copier-
coller de l'interpréteur python dans un traitement de texte, puis les imprimer.
La largeur d'indentation peut aussi être modifiée à partir du menu Format/New Indent
Width (ce menu est visible lorsque IDLE est en mode éditeur) :
Contenu :
• familiarisation avec l'environnement de développement
• types de base : entier, flottant, chaîne de caractères, booléen ;
• variables ;
• saisies et affichage ;
• instruction conditionnelle if.
Fichiers à rendre : TP1_1.py ; TP1_2.py ; TP1_3.py ; TP1_4.py ; TP1_5.py
20/3
20//3
20%3
5.45*10
2**4
(3+2)*5
3+2*5
Astuce : pour éviter d'avoir à retaper toute une ligne, utilisez la flèche “haut” du clavier pour vous
positionner sur cette ligne, puis tapez “Entrée” : la ligne est recopiée après l'invite de commande et
vous pouvez la modifier avant de taper à nouveau “Entrée”.
Certaines instructions ne sont pas acceptées par l'interpréteur python et provoquent l'affichage d'un
message d'erreur. Il faut lire attentivement tous les messages d'erreur (même s'ils sont en anglais)
car ces messages nous apprennent comment fonctionne le langage et nous aident à corriger nos
instructions et nos programmes. Tapez les instructions suivantes, observez les erreurs obtenues et
analysez-les :
20@3
"bonjour"/3
"bonjour" + 5
(3+2))*5
(3+2*5
type(1.5)
type(3.0)
type("bonjour")
type("3")
type(3+1.5)
//
**
Tableau 4 : transtypage
donnée de départ de quel type est la instruction à taper type du résultat obtenu et/ou
donnée de départ ? commentaire
3.0 int(3.0)
3.5 int(3.5)
3 float(3)
4 str(4)
"3" int("3")
"3.5" float("3.5")
"3.5" int("3.5")
"bonjour" int("bonjour")
age = 20
age = 30
prenom = "Perceval"
taille_m = 1.75
taille_cm = 100*taille_m
age = age + 3
Pour afficher le contenu d'une variable dans l'interpréteur python, il suffit de taper le nom de cette
variable. Taper les instructions suivantes et compléter :
instruction à taper quelle valeur contient la variable ? (+ commentaire)
age
prenom = "Lancelot"
prenom
age = 40
age
age = 22
age
age = age + 1
age
phrase1
phrase2
profession
profession="étudiant(e)"
profession
Remarque : le langage Python permet de faire plusieurs affectations à la fois, séparées par des
virgules sur une seule ligne, mais cette utilisation est fortement déconseillée dans le cadre de ces
TP. Exemple d'une telle affectation multiple : (à ne pas utiliser dans ces TP !)
>>> nom,prenom,age,etudiant="Student","Joe",20,True
1.2.2 - Les noms de variables
Un nom de variable doit (conventions TPs Python, à respecter !) :
• débuter par une lettre minuscule
• contenir uniquement des lettres sans accents, des chiffres et le tiret de souligne
ment _ (appelé tiret “underscore” ou encore “tiret du 8”)
• Être aussi explicite que possible (ne pas utiliser de noms trop courts et sans signi
fication comme a, b, x, y, n, mais utiliser plutôt age, longueur, nombre, somme...)
Le langage Python fait la distinction entre les majuscules et les minuscules.
numero = numero + 1
numero = int(numero)
type(numero)
numero = numero + 1
Exercice 5 : programme TP1_1 : saisie d'un nom, prénom, âge par l'utilisateur
Nous allons modifier le programme TP1_1.py. Remplacez la ligne
nom = "Cleese (ou votre nom)"
par
nom = input("Quel est ton nom ? ")
Faites de même pour les variables prenom et age. Enregistrez et exécutez. Vérifiez que l'utilisa
teur peut entrer n'importe quels noms, prénoms et âges et que ceux ci s'affichent bien ensuite dans
une phrase “ bonjour (prénom nom), tu as (âge) ans ”.
Commentez et indiquez les résultats obtenus dans votre compte-rendu de TP.
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""Documentation de
ce module
"""
# fichier: nom_fichier.py
# auteur: prof
# date : juillet 2011
Tapez les lignes suivantes dans la partie “ programme principal ” puis exécutez :
var1 = input("Quelle est la première valeur ? ")
var2 = input("Quelle est la deuxième valeur ? ")
var_somme = var1 + var2
print("La somme des deux valeurs est", var_somme)
Quel résultat est obtenu ? On souhaite que la variable var_somme contienne la somme des deux
nombres entrés par l'utilisateur. Corrigez ce programme pour qu'il fasse ce qui est souhaité.
Commentez dans votre compte-rendu de TP.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Ce module calcule le volume d'une sphère."""
# fichier: exemple.py
# auteur: Bob Cordeau
# imports
from math import pi
"""
---- Résultats de l'exécution ----
Rayon de la sphère en mètre : 22.4
Volume de la sphère de rayon 22.4 m : 47079.58915864106 m3
Volume de la sphère de rayon 22.4 m : 47079.59 m3
>>>
Rayon de la sphère en mètre : 3
Volume de la sphère de rayon 3.0 m : 113.09733552923254 m3
Volume de la sphère de rayon 3.0 m : 113.10 m3
>>>
Rayon de la sphère en mètre : -1
Volume de la sphère de rayon -1.0 m : -4.1887902047863905 m3
Volume de la sphère de rayon -1.0 m : -4.19 m3
>>>
Rayon de la sphère en mètre : 0
Volume de la sphère de rayon 0.0 m : 0.0 m3
Volume de la sphère de rayon 0.0 m : 0.00 m3
>>>
Rayon de la sphère en mètre : toto
Traceback (most recent call last):
File "/home/sabine/Desktop/polys python/volume_sphere.py", line 13, in <module>
rayon = float(input("Rayon de la sphère en mètre : "))
ValueError: could not convert string to float: 'toto'
"""
Remarquez qu'il ne faut pas tester le programme sur une seule valeur, mais sur plusieurs valeurs
afin de tester tous les cas possibles (dans l'exemple ci-dessus, nous avons testé le calcul du volume
Tableau 7 : booléens
instruction à taper résultat obtenu + commentaire ou explication
1 == 1
1 == 3
1 != 3
1 == 1.0
(3+7) == (5*2)
(1 == 1) and (2<2)
(1 == 1) and (2<=2)
(2 == 15) or (3>2)
1 < 4 < 15
valeur = (1==1)
type(valeur)
not(valeur)
True or False
- inclure un jeu d'essais en fin de programme + les résultats obtenus entre 3 guillemets.