ISBS ECUE 122 TP1 Programmation avec Python (avec corrigé) 2016-2017
Avant de commencer...
... quelques indications sur le travail à faire durant toute l’unité :
Lisez l’intégralité des énoncés de TP. Ne "sautez" pas directement aux exercices à faire sans prendre
connaissances des informations associées.
Pour chaque TP, rédigez un compte-rendu. Les comptes-rendus seront exigibles immédiatement en cas de
litige après vos évaluations.
Vous pouvez me les envoyer par mail ( [email protected] ) si vous avez des doutes ou interroga-
tions. Il sera alors annoté (mais non noté).
Deux jours après le TP, un corrigé sera mis en ligne. Lisez-le intégralement.
Pour vos comptes-rendus, utilisez un traitement de texte (LibreOffice,OpenOffice) et des styles pour
distinguer le texte du compte rendu de celui des listings des programmes Python que vous y insérez (au
minimum, un style "python" avec police de caractères à largeur constante). Cherchez une police qui
distingue bien les caractères qui se ressemblent : voir la figure ci-dessous pour des exemples de polices
avec I (i majuscule), l (L minuscule), 1(le chiffre un), O (o majuscule), 0(le chiffre zéro).
En cas de problème, essayez de réduire la taille de votre programme pour en faire un exemple complet
minimal (ECM), reproduisant l’erreur sans contenir une ligne de code parasite. En créant cet ECM, neuf
fois sur dix, vous trouverez l’erreur.
Si le problème persiste, n’abandonnez pas. La communauté des utilisateurs Python est très ouverte et
donne, même aux débutants, des conseils, trucs et astuces, dans des FAQs et forums que vous pouvez
consulter sur Internet. Par exemple :
Ihttp://python.developpez.com/
Ihttp://programmers.stackexchange.com/questions/tagged/python
ou contactez moi par mail, en y joignant l’ECM.
Pensez à noter et classer les problèmes rencontrés lors de l’utilisation de Python, avec vos tentatives
infructueuses de résolutions et vos solutions expliquées.
Comparaison de polices pour listings
Deux lignes de dix et treize caractères (la deuxième commence par exactement quatre
espaces).
Remarquez les bons alignements avec les deux dernières polices : la lettre l(L
minuscule) de la deuxième ligne doit se situer exactement au-dessous du chiffre 0de
la première ligne.
if O == 0:
I=l+1 avec serif (Times New Roman) non
if O == 0:
I=l+1 sans serif (Arial) non
if O == 0:
I=l+1 exotique (Gothic) non
if O == 0:
I=l+1 monospace (Courier New) oui
if O == 0:
I=l+1 monospace (Inconsolata) oui
if O == 0:
I=l+1 monospace (DejaVu Sans Mono) oui
–1/14–
ISBS ECUE 122 TP1 Programmation avec Python (avec corrigé) 2016-2017
1 Mise en route
Au démarrage, sélectionnez le système Linux. Créez un répertoire Python dans votre espace de travail. Lancez
Python :
sous Linux :
menu Applications, puis sous-menu Programmation, puis lancement IDLE (using Python-3.4)
sous Windows, si vous l’avez installé chez vous : menu Tous les programmes, puis sous-menu Python 3.4,
puis lancement IDLE (Python GUI)
Une fenêtre semblable à celle de la figure ci-dessous s’ouvre.
La fenêtre Python Shell permet d’entrer des calculs. Une invite (prompt en anglais) formée de trois chevrons
>>>
autorise à entrer des expressions Python. Entrez par exemple, après l’invite, la ligne suivante :
>>> (2015 * 2016) // 2 # la somme des 2015 premiers nombres
2031120
La fin de ligne à partir du
#
est un commentaire, ignoré par Python. L’opérateur
//
est celui de la division
euclidienne.
Dans la fenêtre IDLE Python Shell, les raccourcis <Alt>p et <Alt>n permettent de naviguer dans l’historique
des commandes. Un nom spécial,
_
(tiret de soulignement, underscore), permet de récupérer le résultat de la
dernière commande. Si l’on est positionné sur une ligne, l’appui sur <Entr> copie/colle cette ligne en fin de ligne
courante. Évidemment, <Ctrl>C/<Ctrl>V permet de copier/coller une portion de texte ou même un résultat.
De plus, une aide très complète est fournie avec Python en passant par le menu Help/Python Docs, raccourci <F1>.
Cette aide contient en particulier The Python Tutorial qui est une lecture indispensable :
Ihttp://docs.python.
org/3.4/tutorial/
Exercice 1 — Entrée d’expressions
Entrez les commandes suivantes sous le Shell IDLE. Utilisez
<Alt>p
et
<Alt>n
pour utiliser les commandes de
l’historique :
>>> 2015 * 2016
4062240
>>> 2015 * 2016 // 2
2031120
>>> 2015 * 2016
4062240
>>> _ // 2
2031120
>>> 2015*2016 + 2015
4064255
Python Shell sous IDLE ne permet d’entrer qu’une commande à la fois : il n’est en général utilisé que pour
tester quelques lignes de programme. Quand le travail est plus long, on utilisera de préférence un éditeur de
programmes permettant d’entrer, de sauvegarder ou de recharger des enchaînements d’instructions.
–2/14–
ISBS ECUE 122 TP1 Programmation avec Python (avec corrigé) 2016-2017
2 Python, une calculatrice simple
Python permet de calculer avec trois sortes de nombres : les entiers (
int
) comme
1234
, les décimaux (
float
)
comme 3.14 ou 2.0e13) et les complexes (complex) comme 2.5+3.1j
Exercice 2 — Les nombres littéraux
Solution p. 10
Écrivez en Python les nombres suivants :
1 234 123 456 789 3,14
6,02 ×1023 1,602 176 53 ×1019
2+3i2i
Essayez d’entrer les nombres de l’exercice 2. Notez les messages d’erreur, si vous laissez des espaces, ou oubliez
de préfixer jdans les complexes. Remarquez que 3,14 n’entraîne pas d’erreur, mais crée le couple (3, 14).
Dans The Python Tutorial, rendez-vous au paragraphe
3. An Informal Introduction to Python
3.1. Using Python as a Calculator
3.1.1. Numbers
(ou Ihttp://docs.python.org/3.2/tutorial/introduction.html#numbers)
et consultez-le pour les exercices suivants.
Exercice 3 — Calculs et types
Solution p. 10
Quels sont les résultats (valeur et type) des expressions suivantes ?
23 + 8 23.2 - 8.2 (17+1j) - (17+1j)
3 * 17 3 * 17.0 (3+1j) * (3-1j)
3 * 0 3.5 * 0 (3+1j) * 0
23 / 8 23 // 8 23.0 // 8
24 / 8 24 // 8 24.0 // 8
23 % 8 23.0 % 8 24.0 % 8
(2+4j) / (1+3j) (2+4j) // (1+3j) (2+4j) // (1+2j)
2 ** 16 2.0 ** 16 0 ** 0
(1j)** 2 (-1) ** 0.5 -1 ** 0.5
Note : L’appel à la fonction type(x) retourne le type de x.
Les opérateurs numériques de base sont :
+addition
-soustraction
*multiplication
/division
// division entière
%reste de la division entière
** élévation à la puissance
Le type du résultat est celui de l’opérande le plus compliqué, excepté pour
/
pour lequel le type du résultat
ne peut pas être entier (cf. exercice 3)
–3/14–
ISBS ECUE 122 TP1 Programmation avec Python (avec corrigé) 2016-2017
Exercice 4 — Quelques calculs curieux
Solution p. 11
Calculer les valeurs suivantes. Expliquez les bizarreries.
0,3+0,2+0,1 0,1+0,2+0,3
0,3×0,2×0,1 0,1×0,2×0,3
(1,2+1,3)21,22+ 2 ×1,2×1,3+1,32
19 ×
1 + 3
1
1 + 1
1 + 1
2
1
1 + 1
1 + 1
3
3 Python, une calculatrice à mémoire de données
Lorsque les enchaînements de calcul sont trop nombreux ou trop longs, il est possible de mémoriser des
données, en utilisant des noms prermettant de s’y référer.
Il faut utiliser des noms parlants, permettant au lecteur de se passer de commentaires. Par exemple, pour
initialiser une variable à la valeur du rayon d’un cercle :
>>> rayon = 3
puis, les lignes suivantes :
>>> pi = 3.1416
>>> périmetre = 2 * pi * rayon
>>> aire = pi * rayon ** 2
>>> print("Le périmètre d'un cercle de rayon", rayon, "vaut", périmetre)
Le périmètre d'un cercle de rayon 3 vaut 18.8496
>>> print("et son aire vaut", aire)
et son aire vaut 28.2744
La lecture des instructions est beaucoup plus facile que s’il on avait utilisé des noms comme
r, p, a
ou pire
a, b, c. Comparer le code ci-dessus avec celui ci-dessous, qui pourtant affiche la même chose.
>>> a=3
>>> b = 2 * 3.1416 * a
>>> c = 3.1416 * a ** 2
>>> print("Le périmètre d'un cercle de rayon", a, "vaut", b)
Le périmètre d'un cercle de rayon 3 vaut 18.8496
>>> print("et son aire vaut", c)
et son aire vaut 28.2744
–4/14–
ISBS ECUE 122 TP1 Programmation avec Python (avec corrigé) 2016-2017
Exercice 5 — Les grains de blé sur l’échiquier
Solution p. 11
L’écrivain arabe A s a p h a d rapporte, en effet, que S e s s a, fils de Da h e r, imagina le jeu des échecs,
où le roi, quoique la pièce la plus importante, ne peut faire un pas sans le secours de ses sujets les pions, dans
le but de rappeler au monarque indien S c h e r a n les principes de justice et d’équité avec lesquels il devait
gouverner. S c h e r a n, enchanté d’une leçon donnée d’une manière si ingénieuse, promit à l’inventeur de lui
donner tout ce qu’il voudrait pour sa récompense. Celui-ci répondit : « Que Votre Majesté daigne me donner
un grain de blé pour la première case de l’échiquier, deux pour la seconde, quatre pour la troisième, et ainsi
de suite, en doublant jusqu’à la soixante-quatrième case. »
Édouard L u c a s,L’arithmétique amusante, Blanchard 1974
Écrivez la suite d’instructions permettant de calculer le nombre d’années de production qu’il faudrait pour
garnir l’échiquier (on prendra 0,035 g pour la masse d’un grain et 653 millions de tonnes pour la production
annuelle mondiale de blé en 2013).
Note : La solution :
>>> int((2 ** 64 - 1) * 0.035 / 1000000 / 653000000)
988
donne le résultat, mais n’est pas assez claire. Pour rendre ce calcul plus lisible en évitant d’utiliser une expression
ne contenant que des nombres, utilisez des variables en leur donnant des noms parlants, de manière à ce que la
suite d’instruction s’auto-commente.
Par exemple,
>>> masse_d_un_grain = 0.035
4 Écriture de programmes
La fenêtre Python Shell s’avère vite insuffisante lorsque les développements prennent de l’importance. Il est
nécessaire alors de stocker des suites d’instructions dans un fichier (script) que l’on peut sauvegarder sur disque
pour le conserver et le réutiliser en cas de besoin.
Pour pouvoir saisir un programme et le sauvegarder, on dispose de l’éditeur de texte IDLE (lui-même écrit en
Python).
Dans la fenêtre Python Shell, choissez le File/New File. La fenêtre ci-dessous apparaît.
Cette fenêtre, titrée pour l’instant Untitled, va nous permettre de saisir notre premier programme, limitée à
une seule instruction :
print("Bonjour")# print affiche le texte écrit entre double quotes
On peut sauvegarder ce programme (le classique File/Save As...), et pour exécuter ce programme, on utilise le
menu Run/Run Module (raccourci <F5>).
La fenêtre Python Shell est réinitialisée et le programme s’exécute.
Les expressions peuvent être nommées pour être réutilisées plus facilement. Par exemple, pour demander à
l’utilisateur son nom, puis lui afficher un message de bienvenue :
–5/14–
1 / 14 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 !