polycopié de TP - LIMSIcours:tp... · 2012. 10. 22. · info - TP page 2. 0 - Instructions...

20
IUT ORSAY DUT MESURES PHYSIQUES 1ère année, semestre 2 INFORMATIQUE ET ALGORITHMIQUE avec le langage Python polycopié de TP Laboratoire IDM version 3.2 - 2012-2013 Laurent Pointal, Sabine Marduel, Gilles Laschon 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.

Transcript of polycopié de TP - LIMSIcours:tp... · 2012. 10. 22. · info - TP page 2. 0 - Instructions...

Page 1: polycopié de TP - LIMSIcours:tp... · 2012. 10. 22. · info - TP page 2. 0 - Instructions générales 0.1 - Démarrage de l'ordinateur et de l'environnement de développement python

IUT ORSAYDUT MESURES PHYSIQUES

1ère année, semestre 2

INFORMATIQUEET

ALGORITHMIQUE

avec le langage Python

polycopié de TPLaboratoire IDM

version 3.2 - 2012-2013

Laurent Pointal, Sabine Marduel, Gilles Laschon

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.

Page 2: polycopié de TP - LIMSIcours:tp... · 2012. 10. 22. · info - TP page 2. 0 - Instructions générales 0.1 - Démarrage de l'ordinateur et de l'environnement de développement python

Bibliographie

BALKANSKI, Cécile et MAYNARD, Hélène, Algorithmique et C++, Supports de TD et de TP, IUT d'Orsay, département Informatique

CHUN, W. J., Au Coeur de Python, CampuPress, 2007.

CORDEAU, Bob, Introduction à Python 3, version 2.71828 ,<hebergement.u-psud.fr/iut-orsay/Pedagogie/MPHY/Python/courspython3.pdf> ou <http://perso.limsi.fr/pointal/_media/python:cours:courspython3.pdf>

CORDEAU, Bob, Python, Python 3, Exercices corrigés, version 2.2, 2008-2009,<http://hebergement.u-psud.fr/iut-orsay/Pedagogie/MPHY/Python/exercices-

python3.pdf> ou <http://perso.limsi.fr/pointal/_media/python:cours:exer­cices-python3.pdf>

DABANCOURT, Christophe, Apprendre à programmer, Algorithmes et conception objet, Eyrolles, 2008, 2e édition.

LUTZ et BAILLY, Mark et Yves, Python précis et concis, O’Reilly, 2e édition, 2005.

MARTELLI, ALEX, Python en concentré, O’REILLY, 2004.

MARTELLI, ALEX, Python par l'exemple, O’REILLY, 2006.

POINTAL, LAURENT, SITE WEB : Cours Programmation Python, <http://perso.limsi.fr/pointal/python:cours_prog>

SWINNEN, Gérard, Apprendre à programmer avec Python 3, Eyrolles, 2010,<http://inforef.be/swi/python.htm>

SUMMERFIELD, Mark, Programming in Python 3, Addison-Wesley, 2e édition, 2009.

YOUNKER, Jeff, Foundations of Agile Python Development, Apress, 2008.

ZIADÉ, Tarek, Programmation Python. Conception et optimisation, Eyrolles, 2e édition, 2009.

ZIADÉ, Tarek, Python : Petit guide à l’usage du développeur agile, Dunod, 2007.

Sites internet :

<http://www.python.org> et en particulier <http://docs.python.org> (manuel de réfé­rence python)

<http://python.developpez.com> : site d'entraide avec une FAQ, un forum, des aides, etc.

info - TP page 2

Page 3: polycopié de TP - LIMSIcours:tp... · 2012. 10. 22. · info - TP page 2. 0 - Instructions générales 0.1 - Démarrage de l'ordinateur et de l'environnement de développement python

0 - Instructions générales

0.1 - Démarrage de l'ordinateur et de l'environnement de développement python

Pour ouvrir une session :entrez le nom d'utilisateur infoN et le mot de passe infoN , en remplaçant N par le numéro de votre poste informatique entre 1 et 9 (voyez l'étiquette collée sur l'écran).

Pour ouvrir l'environnement de développement python :menu Applications / Programmation / IDLE3.

Pour naviguer dans le gestionnaire de fichiers :menu en haut de l'écran (Raccourcis ou Places).

En fin de séance :éteignez la machine, soit avec le bouton « éteindre » en haut à droite de l'écran, soit à partir du menu système. Puis, éteignez l'écran.

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.3 - Enregistrement de votre travail

0.3.1 - Pendant la séance de TP : sur le bureauDès que vous aurez commencé à créer des fichiers et à écrire des programmes, vous devrez impé­rativement enregistrer ces fichiers sur le BUREAU de votre ordinateur, dans le répertoire TP1 pour la première séance de TP, TP2 pour la deuxième séance de TP, etc. Faites des sauvegardes fréquentes (par exemple toutes les 5 ou 10 minutes). En effet, parfois, les ordinateurs se bloquent et tout le travail en cours est perdu.

Attention : n'enregistrez pas vos fichiers à l'emplacement par défaut qui est home/infoN. Depuis le navigateur de fichiers, l'emplacement à utiliser est uniquement home/infoN/Bureau/TPx (ou home/infoN/Desktop/TPx). En fin de séance, vous vérifierez que vos fichiers n'ont pas

info - TP0 page 3

Page 4: polycopié de TP - LIMSIcours:tp... · 2012. 10. 22. · info - TP page 2. 0 - Instructions générales 0.1 - Démarrage de l'ordinateur et de l'environnement de développement python

été enregistrés par erreur dans home/infoN et qu'ils se trouvent bien tous dans le bon répertoire sur le bureau.

0.3.2 - A la fin de la séance de TP : sur clé USBAprès chaque séance de TP, le disque dur de chaque ordinateur est entièrement vidé pour laisser la place au groupe de TP suivant : le travail réalisé pendant le TP sera donc effacé après la séance. Avant de quitter la salle, vous devez donc enregistrer tout votre travail sur une clé USB que vous rapporterez à chaque séance.

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.

0.5 - Blocages éventuels

Il peut arriver, lors des tests de scripts, que le programme qu'on a écrit rentre dans une boucle sans fin, ou encore qu'une application reste ouverte mais ne réponde plus à la souris.

Sous Linux, il est possible d'ouvrir une fenêtre console, et d'exécuter une commande pour forcer la terminaison du programme « fou » :

Soit :

infoX@idmX:~$ xkill

Puis aller cliquer, avec le curseur de la souris en forme de tête de mort, sur la fenêtre du programme qui ne répond pas.

Soit, si on ne voit même plus le programme, essayer une commande :

infoX@idmX:~$ killall -9 nom_du_programme

Si on ne sait même plus le nom, on peut lister les programmes en cours d'exécution pour l'utilisa­teur :

infoX@idmX:~$ ps -ux

info - TP0 page 4

Page 5: polycopié de TP - LIMSIcours:tp... · 2012. 10. 22. · info - TP page 2. 0 - Instructions générales 0.1 - Démarrage de l'ordinateur et de l'environnement de développement python

0.6 - Installation de Python3 et de IDLE3 sur votre ordinateur personnel

Vous pouvez installer Python3 et IDLE3 sur votre ordinateur personnel si vous en avez un.

Si vous avez un PC sous Linux (Ubuntu, Debian ou autre) :

Python est probablement déjà installé. Si vous avez Python3, laissez-le tel quel (peu importe s'il s'agit de la version 3.1 ou 3.2). Si vous avez Python2 mais pas Python3, n'enlevez pas Python2 (car il est peut-être utile pour le bon fonctionnement de votre système) et rajoutez Python3 en l'installant depuis le gestionnaire de paquets : choisissez IDLE3 (rajoutez TKINTER si c'est un paquet optionnel).

Si vous avez un Mac :

Python est probablement déjà installé. S'il s'agit de python2, ne l'enlevez pas car il est utile pour le fonctionnement du système d'exploitation. Vous pouvez installer python3 sans enlever python2. Suivez les mêmes instructions de téléchargement que pour Windows ci-dessous.

Si vous avez un PC sous Windows ou un Mac où Python3 n'est pas présent :

vous pouvez télécharger et installer IDLE3 pour python3 à l'adresse suivante :

http://www.python.orgCliquez download pour télécharger python, puis release pour choisir la version. Choi­sissez la version Python 3.2.1 (ou autre version 3.2.x si la 3.2.1 n'est plus disponible). Sur la page qui s'ouvre, sous le titre Download, téléchargez la version qui vous intéresse : Windows ou Mac OS.

Attention : si vous hésitez entre plusieurs versions, choisissez toujours une version « stable » (c'est à dire une version terminée et déjà testée), mais pas une version « en déve­loppement » (ceci signifie qu'il s'agit d'une version inachevée qui contient encore des bugs).

Si vous ne disposez pas d'un ordinateur chez vous, vous pourrez venir faire votre travail personnel à l'IUT dans la salle « Chablis » (bâtiment A, salle A017) où vous trouverez Python3 et IDLE3.

info - TP0 page 5

Page 6: polycopié de TP - LIMSIcours:tp... · 2012. 10. 22. · info - TP page 2. 0 - Instructions générales 0.1 - Démarrage de l'ordinateur et de l'environnement de développement python

Pour configurer IDLE :

menu Options/Configure IDLE, puis vérifiez que la rubrique Indentation Width est bien réglée sur 4 espaces (4 spaces). Vous pouvez cliquer sur l'onglet High­lighting si vous voulez personnaliser les couleurs de votre IDLE (mais il est conseillé de laisser les couleurs par défaut).

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) :

info - TP0 page 6

Page 7: polycopié de TP - LIMSIcours:tp... · 2012. 10. 22. · info - TP page 2. 0 - Instructions générales 0.1 - Démarrage de l'ordinateur et de l'environnement de développement python

1 - Types, variables, tests

1.1 - Types numériques et type chaîne de caractères

1.1.1 - L'interpréteur PythonLancez le logiciel IDLE3, qui est celui dans lequel nous utiliserons Python dans le cadre de ces TP : menu Applications / Programmation / IDLE3.

L''interpréteur Python (aussi appelé “shell Python”) apparaît : il s'agit d'une fenêtre avec une invite de commandes (ou “prompt”), symbolisée par le signe >>> , qui vous invite à taper une commande (ou instruction). Cela fonctionne un peu comme une messagerie instantanée (un “ chat ” comme par exemple MSN ou GTalk) où Python vous “ répondra ” à chaque fois que vous lui écrirez quelque chose.

1.1.2 - Les premières commandes python - les opérateursNous allons maintenant dialoguer avec cet interpréteur Python : tapez les instructions de la colonne de gauche et écrivez les résultats obtenus (les réponses de l'interpréteur), dans la colonne de droite, en commentant éventuellement (essayez de prévoir la réponse et, si elle est différente, de comprendre pourquoi la réponse qui vous paraît logique n'a pas été celle de l'ordinateur).

Tableau 1 : premières commandes pythoninstruction à taper résultat obtenu + commentaire ou explication

20+1

20/3

20//3

20%3

5.45*10

2**4

(3+2)*5

3+2*5

info - TP1 page 7

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

Page 8: polycopié de TP - LIMSIcours:tp... · 2012. 10. 22. · info - TP page 2. 0 - Instructions générales 0.1 - Démarrage de l'ordinateur et de l'environnement de développement python

"bonjour"

(avec des guillemets)

'bonjour'

(avec des apostrophes et non pas des guillemets)

"il fait " + "beau"

"il fait " + "beau" + " et chaud"

"bonjour "*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”.

+ , * , / , // , % , ** , sont des opérateurs python. Ils permettent de réaliser des opéra­tions sur des données.

20 , 3 , 5.45 , "bonjour" sont des données.

Chaque donnée possède un certain type ; ici il s'agit :du type entier ou int pour les données 20 et 3du type flottant ou float, pour la donnée 5.45du type chaîne de caractères ou string pour la donnée "bonjour"

(il existe d'autres types de données que nous verrons par la suite).

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 :

Tableau 2 : premiers messages d'erreurinstruction à taper erreur observée + explication

20/0

20@3

"bonjour"/3

"bonjour" + 5

(3+2))*5

(3+2*5

info - TP1 page 8

Page 9: polycopié de TP - LIMSIcours:tp... · 2012. 10. 22. · info - TP page 2. 0 - Instructions générales 0.1 - Démarrage de l'ordinateur et de l'environnement de développement python

Pour connaître le type d'une donnée, on peut utiliser le mot type : tapez ce qui suit :

Tableau 3 : les types de donnéesinstruction à taper résultat obtenu + commentaire ou explication

type(3)

type(1.5)

type(3.0)

type("bonjour")

type("3")

type(3+1.5)

Exercice 1 : opérateurs et types de donnéesSur quels types de données peut-on utiliser les opérateurs + , * , / , // , % , ** ? Quel est le type du résultat ? Répondre en complétant ci-dessous. Vous pouvez faire des tests en tapant d'autres instructions dans l'interpréteur python.

(exemple : 3+7.1 est accepté par l'interpréteur python, donc l'opérateur + s'applique à un entier et à un flottant, et le résultat est de type flottant).

opérateur types de données utilisables type du résultat

+

*

/

//

%

**

Pour les chaînes de caractères, l'opérateur + s'appelle la concaténation(il fusionne bout à bout deux chaînes de caractères)

info - TP1 page 9

Page 10: polycopié de TP - LIMSIcours:tp... · 2012. 10. 22. · info - TP page 2. 0 - Instructions générales 0.1 - Démarrage de l'ordinateur et de l'environnement de développement python

1.1.3 - Le transtypageOn peut parfois transformer une donnée d'un certain type, en une donnée d'un autre type. Cela s'appelle le transtypage (ou cast en anglais).

Tableau 4 : transtypagedonnée de départ de quel type est la

donnée de départ ?instruction à taper type du résultat obtenu et/ou

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")

Exercice 2 : corriger les instructions Comment corriger les instructions suivantes pour qu'elles ne provoquent plus d'erreur ?

a) but recherché : on veut obtenir la chaîne de caractères "vous êtes 2 dans ce binôme TP"

instruction : "vous êtes" + 2 + "dans ce binôme TP"

instruction corrigée : ...

b) but recherché : on veut afficher "blablablablablablablablablabla" c'est à dire "bla" 10 fois de suite.

instruction : "bla"*10.0

instruction corrigée : ...

1.2 - Les variables et l'affectation

1.2.1 - L'affectationIl peut être pratique de ranger les données dans des contenants, aussi appelés variables, afin de les conserver dans la mémoire de l'ordinateur pour les utiliser plus tard.

Le rangement d'une donnée (un contenu) dans une variable (un contenant) s'appelle l'affectation. L'affectation se fait grâce à l'opérateur = qui s'appelle l'opérateur d'affectation.

info - TP1 page 10

Page 11: polycopié de TP - LIMSIcours:tp... · 2012. 10. 22. · info - TP page 2. 0 - Instructions générales 0.1 - Démarrage de l'ordinateur et de l'environnement de développement python

= est l'opérateur d'affectation

L'affectation se fait en deux temps :

(1) évaluation (c'est à dire calcul) de la partie à droite de l'opérateur d'affectation (selon des règles de priorité de calcul correspondant au type des données concernées). Le résultat de cette évaluation est la donnée (le contenu) qui va être rangée dans la variable.

(2) rangement du résultat de cette évaluation dans la partie à gauche de l'opérateur d'affectation. Cette partie à gauche est la variable (le contenant).

Attention : ne pas confondre l'opérateur d'affectation = avec le symbole d'égalité mathématique. L'affectation n'est ni une équation mathéma­

tique, ni une égalité mathématique !

Application : taper les instructions suivantes dans l'ordre indiqué, et compléter le tableau.

Tableau 5 : opérateur d'affectation =

instruction à taper quelle est la variable ?

Quelle est la donnée (ou est le résultat de l'évaluation de la

partie droite) ? De quel type est cette donnée (ou ce résultat) ?

age = 20

age = 30

prenom = "Perceval"

taille_m = 1.75

taille_cm = 100*taille_m

age = age + 3

phrase1 ="bonjour "+ prenom

phrase1 = phrase1 + " !"

phrase2 = prenom +" a " +str(age)+" ans."

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

info - TP1 page 11

Page 12: polycopié de TP - LIMSIcours:tp... · 2012. 10. 22. · info - TP page 2. 0 - Instructions générales 0.1 - Démarrage de l'ordinateur et de l'environnement de développement python

prenom

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 variablesUn 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.

info - TP1 page 12

Page 13: polycopié de TP - LIMSIcours:tp... · 2012. 10. 22. · info - TP page 2. 0 - Instructions générales 0.1 - Démarrage de l'ordinateur et de l'environnement de développement python

Les mots clés réservés du langage ne peuvent pas être utilisés comme nom de variables (car ils sont déjà “réservés” par le langage). Ce sont :

and as assert break class

continue def del elif else

except False finally for from

global if import in is

lambda None nonlocal not or

pass raise return True try

while with yield

Exercice 3 : échanger la valeur de 2 variablesécrire (sur papier) un algorithme pour échanger les valeurs de 2 variables que vous nommerez var1 et var2.

1.3 - Le mode éditeur

Nous allons maintenant laisser de côté l'interpréteur python (vous pourrez vous en resservir de temps en temps lorsque vous voudrez tester une instruction) et nous allons passer en mode éditeur, pour écrire des programmes (appelés aussi scripts ou applications) qui pourront être enregistrés et réutilisés plus tard.

Exercice 4 : programme TP1_1Dans IDLE, cliquez le menu File / Open. Dans le répertoire TP1 qui se trouve sur le bureau, ouvrez (avec IDLE) le programme TP1_1.py. Ce programme sera à imprimer et à rendre en fin de TP.

L'extension de fichier .py indique qu'il s'agit d'un programme (ou script) python.

1) Dans la partie “ en-tête du module ”, modifiez la date et le nom de l'auteur (en remplaçant par le nom des étudiant(e)s du binôme).

2) Exécutez ce programme en cliquant le menu Run/Run module (ou en utilisant le raccourci clavier F5). Commentez dans votre compte rendu de TP.

3) (Répondez dans votre compte-rendu de TP) : pourquoi a-t-on écrit str(age) et pas simple­ment age dans la ligne :print("bonjour " + prenom + " " + nom + ", tu as " + str(age) + " ans.")

4) Dans la partie “ programme principal ”, modifiez la valeur des variables : affectez votre nom, votre prénom et votre âge aux variables nom, prenom, age. Enregistrez le programme et exécutez-le à nouveau. Que s'affiche-t-il ? (Répondez dans votre compte-rendu de TP).

1.3.1 - Le programmeur et l'utilisateur du programmeIl ne faut pas confondre le “programmeur” ou “développeur” (celui ou celle qui écrit le programme) et “ l'utilisateur ” (celui ou celle qui utilisera le programme). Seul le programmeur peut modifier le programme (c'est à dire le fichier d'extension .py). L'utilisateur est complètement extérieur au programme ; il ne peut qu'exécuter le programme en lançant la commande Run module.

info - TP1 page 13

Page 14: polycopié de TP - LIMSIcours:tp... · 2012. 10. 22. · info - TP page 2. 0 - Instructions générales 0.1 - Démarrage de l'ordinateur et de l'environnement de développement python

1.3.2 - Les fonctions d'entrée / sortieAfin que l'utilisateur puisse entrer des données dans les variables du programme et visualiser les résultats calculés par le programme, le programmeur utilise des fonctions d'entrée et de sortie.

La fonction print est une fonction de sortie : elle affiche à l'écran (à l'attention de l'utilisateur) une donnée ou le contenu d'une variable.

La fonction input est une fonction d'entrée : le programme affiche une question à l'attention de l'utilisateur et attend que l'utilisateur tape sur des touches du clavier en réponse à cette question. L'utilisateur doit terminer sa saisie par la touche “ Entrée ” pour que le programme continue son exécution. La suite de caractères saisie par l'utilisateur est récupérée par le programme où elle peut être utilisée. Elle est généralement affectée à une variable du programme.

La donnée récupérée par la fonction input (en python3) est de type chaîne de caractères.

Si on souhaite récupérer un nombre (et non pas une chaîne de caractères), il faut transtyper cette donnée récupérée par input.

Exemple : dans l'interpréteur, tapez les instructions suivantes.

Tableau 6 : utilisation de la fonction inputinstruction à taper commentaire

numero=input("entrez un chiffre entre 1 et 5 : ")

type(numero)

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.

info - TP1 page 14

Page 15: polycopié de TP - LIMSIcours:tp... · 2012. 10. 22. · info - TP page 2. 0 - Instructions générales 0.1 - Démarrage de l'ordinateur et de l'environnement de développement python

Exercice 6 : afficher la somme de deux valeurs fournies en entrée par l'utilisateur (TP1_2) Nous allons créer un nouveau programme. Pour cela, cliquez le menu File/New Window pour ouvrir un nouveau programme vide. Nommez-le TP1_2.py, enregistrez-le sur le Bureau dans le répertoire TP1 (ce programme sera à rendre en fin de TP). Tapez un en-tête de programme selon le modèle suivant (ou bien ouvrez le fichier modele_script.py , copiez-collez l'en-tête dans votre nouveau programme et modifiez cet en-tête).

#!/usr/bin/python3

# -*- coding: utf-8 -*-

"""Documentation de

ce module

"""# fichier: nom_fichier.py

# auteur: prof

# date : juillet 2011

# ---------- imports ----------

# ---------- Programme Principal ----------

Illustration 1: En-tête d’un script

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.

1.3.3 - Mettre des commentaires dans les programmesDes commentaires doivent toujours figurer dans les programmes : ils permettront aux autres programmeurs de comprendre ce que vous avez voulu faire ; ils vous seront aussi utiles lorsque vous relirez vos propres programmes plus tard.

Les commentaires ne sont pas interprétés comme des instructions du langage, mais ils sont ignorés par Python. Ils sont introduits par un caractère # (tout ce qui suit le # sur la même ligne est un commentaire). Ils peuvent aussi figurer entre des triple-guillemets (""" suivis de """).

Exercice 7 : commenter les programmes TP1_1 et TP1_2 Ajoutez des commentaires précédés du signe # dans vos deux programmes TP1_1.py et TP1_2.py (à rendre en fin de TP) pour expliquer ce que font les différentes lignes du programme.

A partir de maintenant, tous vos programmes devront être commentés.

info - TP1 page 15

Page 16: polycopié de TP - LIMSIcours:tp... · 2012. 10. 22. · info - TP page 2. 0 - Instructions générales 0.1 - Démarrage de l'ordinateur et de l'environnement de développement python

En fin de programme, vous devez copier-coller les résultats de l'exécution du programme entre triple-guillemets """. Tous les programmes rendus dans le compte-rendu de TP devront contenir des résultats en commentaires. Voir l'exemple ci-dessous.

#!/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

# ---------- Programme Principal --------------------------------------

rayon = float(input("Rayon de la sphère en mètre : ")) # saisie du rayon

volume = 4/3*pi*rayon**3 # calcul du volume de la sphère

# affichage du résultat

print("Volume de la sphère de rayon ",rayon, "m :", volume,"m3")

# pour avoir moins de décimales on peut utiliser print avec format

print("Volume de la sphère de rayon {} m : {:.2f} m3".format(rayon, volume))

"""

---- 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'

"""

Illustration 2: Comment présenter les résultats d'un programme

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

info - TP1 page 16

Page 17: polycopié de TP - LIMSIcours:tp... · 2012. 10. 22. · info - TP page 2. 0 - Instructions générales 0.1 - Démarrage de l'ordinateur et de l'environnement de développement python

avec 5 valeurs de rayon : 22.4, 3, -1, 0, et “ toto ” - cette dernière valeur de rayon provoque une erreur).

1.4 - Le type booléen

Le type booléen ou bool est un type de données. Un booléen ne peut prendre que 2 valeurs : vrai (True) ou faux (False). NB : Les majuscules sont importantes : true et false ne sont pas reconnues par le programme, il faut écrire True et False.

Les opérateurs qui s'appliquent aux booléens s'appellent opérateurs logiques. Ce sont : not (NON), and (ET), or (OU).

D'autres opérateurs s'appliquent à des données numériques ou chaînes de caractères et produisent un résultat booléen : ce sont les opérateurs de comparaison := = signifie “est égal à”!= signifie “est différent de”< , <= , > , >= signifient “est inférieur, inférieur ou égal, supérieur, supérieur ou égal” .

Ces opérateurs permettent de faire des tests. Le résultat de l'opération est True si le test est vrai, False si le test est faux.

NB : ne pas confondre l'opérateur de test d'égalité == avec l'opérateur d'affectation = .

Taper les instructions suivantes dans l'interpréteur et compléter le tableau :

Tableau 7 : booléensinstruction à 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 and False

True or False

info - TP1 page 17

Page 18: polycopié de TP - LIMSIcours:tp... · 2012. 10. 22. · info - TP page 2. 0 - Instructions générales 0.1 - Démarrage de l'ordinateur et de l'environnement de développement python

not(False)

1.4.1 - Les tables de vérité de “ not ”, “ and ”, “ or ”Les opérateurs logiques not, and, or, opèrent de la façon suivante :

soient A et B des propositions.

“ non A ” est vrai ⇔ A est faux

“ non A ” est faux ⇔ A est vrai

“ A et B ” est vrai ⇔ (A est vraie) et (B est vraie)

“ A et B ” est faux ⇔ (A est fausse) ou (B est fausse)

“ A ou B ” est vrai ⇔ (A est vraie) ou (B est vraie)

“ A ou B ” est faux ⇔ (A est faux) et (B est faux)

Ceci peut se présenter dans des tableaux appelés tables de vérité :

Exercice 8 : compléter les tables de vérité

Table de vérité de l'opérateur “ non ” (not) :a not a

False

True

Table de vérité de l'opérateur “ et ” (and) :a b a and b

False False

False True

True False

True True

Table de vérité de l'opérateur “ ou ” (or) :a b a or b

False False

False True

True False

True True

1.5 - L'instruction conditionnelle if

Ouvrez le fichier nommé TP1_if.py, qui se trouve dans le répertoire TP1 situé sur le bureau, et observez : il vous donne un exemple d'utilisation de l'instruction conditionnelle if.

Pour faire les exercices ci-dessous, vous devez utiliser cette instruction conditionnelle if. (avec éventuellement les instructions complémentaires elif et else).

info - TP1 page 18

Page 19: polycopié de TP - LIMSIcours:tp... · 2012. 10. 22. · info - TP page 2. 0 - Instructions générales 0.1 - Démarrage de l'ordinateur et de l'environnement de développement python

Exercice 9 : programme TP1_3 : un nombre est-il le double d'un autre ?Ecrire un algorithme (à la main sur papier, à mettre dans le compte-rendu de TP en expliquant éventuellement vos choix) puis un programme python (que vous nommerez TP1_3.py et rendrez imprimé en fin de TP) qui effectue les opérations suivantes :

- demander à l'utilisateur de saisir deux nombres (le programme stockera ces nombres dans des variables qui seront nommées nombre1 et nombre2) ;

- déterminer si le premier nombre est le double du second.

- afficher à l'écran une phrase indiquant à l'utilisateur si le premier nombre est le double, ou pas, du second nombre. Par exemple, avec 8 et 11, on doit obtenir : “ 8 n'est pas le double de 11 ”.

- le programme devra contenir un jeu d'essais, c'est à dire plusieurs lignes de test qui permettront de vérifier que tout fonctionne bien. A la fin du programme, copier-coller les résultats obtenus entre 3 guillemets, comme dans l'exemple de la page 16. Tout comme dans cet exemple, vous devrez tester tous les cas de figure possibles.

Exercice 10 : programme TP1_4 : division euclidienneEcrire un algorithme (sur papier, à inclure dans le compte-rendu de TP avec vos commentaires explicatifs) puis un programme python (que vous nommerez TP1_4.py et rendrez imprimé en fin de TP) qui effectue les opérations suivantes :

- demander à l'utilisateur de saisir deux entiers positifs (le programme les stockera dans des variables qui seront nommées nombre1 et nombre2) ;

- calculer le quotient et le reste de la division euclidienne de nombre1 par nombre2. Attention : si nombre2 est nul, il n'est pas possible d'effectuer la division. Le programme devra prévoir ce cas de figure.

- afficher à l'écran la division euclidienne. Par exemple, avec 45 et 11, on doit obtenir l'affichage suivant :

Division euclidienne: 45 = 11*4 + 1

- inclure un jeu d'essais en fin de programme + les résultats obtenus entre 3 guillemets.

1.6 - Importer des modules et utiliser l'aide (help)

Dans un programme, on peut utiliser des fonctions et variables déclarées dans un autre programme (qu'on appelle alors module), en tapant le mot clé import suivi du nom de ce module.

On peut afficher une aide sur un module tout entier, ou sur une fonction, en utilisant la fonction help() en indiquant entre parenthèses le nom de l'élément au sujet duquel on souhaite une aide.

Exercice 11 : afficher l'aide du module mathLancez la fenêtre de l'interpréteur python et tapez les instructions suivantes :

import math

help(math)

Dans la liste qui s'affiche, cherchez les fonctions : cos, acos, tan, atan, sqrt, pi, exp, log, log10.

Répondez aux questions suivantes :

info - TP1 page 19

Page 20: polycopié de TP - LIMSIcours:tp... · 2012. 10. 22. · info - TP page 2. 0 - Instructions générales 0.1 - Démarrage de l'ordinateur et de l'environnement de développement python

1. à quoi correspondent les fonctions acos, asin, atan ? ...

2. à quoi correspondent les fonctions cosh, sinh ? ...

3. à quoi sert la fonction sqrt ? ...

4. quelle est la fonction qui donne le logarithme népérien ? ...

5. quelle est la différence entre e et exp ? ...

Exercice 12 : programme TP1_5 : équation du second degréOn veut réaliser un programme qui calculera les racines réelles d'un trinôme du second degré : ax2

+ bx + c, où a, b et c sont trois réels. Si le trinôme n'a pas de racine réelle, on souhaite que le programme affiche une phrase indiquant qu'il n'y a pas de racine réelle.

Tout d'abord, vous écrirez un algorithme papier (que vous rendrez dans votre compte-rendu de TP), puis un programme python (que vous nommerez TP1_5.py et rendrez imprimé en fin de TP).Le programme devra :

- Demander à l'utilisateur de saisir les coefficients du trinôme sous forme de 3 nombres flottants (float), qui seront stockés dans des variables a, b, et c.

- Calculer la valeur du discriminant du trinôme qui sera nommé delta.

- Tester la valeur du discriminant, au moyen de l'instruction if. En fonction du signe du discrimi­nant, afficher à l'écran une phrase donnant le nombre de racines réelles du trinôme, puis la valeur de ces racines réelles (ou de cette racine réelle s'il s'agit d'une racine double).

- N'oubliez pas le jeu d'essai en fin de programme, ainsi que des commentaires.

Indication : pour pouvoir utiliser la fonction sqrt du module math, écrivez juste après l’en-tête du fichier, la ligne : from math import sqrt(mais on peut aussi utiliser **0.5 (puissance 1/2) ce qui évite d'avoir à importer la fonction sqrt).

1.7 - Travail personnel

A rendre pour le prochain TP :

1) programme TP1_6.py : programmer en python l'algorithme de l'exercice 3 de ce TP (qui permettait d'échanger le contenu de 2 variables).

2) Facultatif : programme TP1_7.py : il existe dans python un type complex, dans lequel la partie imaginaire est suivie de la lettre j (exemple : 4+3.1j). Ecrivez un programme TP1_7.py pour calculer les racines complexes d'un trinôme à coefficients complexes (vous pouvez copier le contenu du programme TP1_5 et le modifier).

info - TP1 page 20