Introduction à l`environnement de travail - PCSI

publicité
E Bougnol, JJ Fleck,
M Heckmann & M Kostyra,
Kléber, PCSI& -
I. Environnement de travail
1/4
Introduction à l’environnement de travail
Avant de commencer, dirigez vous vers le site internet
http://pcsi.kleber.free.fr/IPT/
et téléchargez le dossier zippé TP03_eleves.zip et dézippez-le (si windows ne l’a pas déjà fait pour vous).
Stockez le dossier TP03/ dans un répertoire Info/ de votre dossier personnel (il y a normalement un lien
sur le bureau qui pointe directement dessus).
Partie I
Environnement de travail
Pour programmer, vous allez avoir besoin de vous familiariser avec votre environnement de développement
(IDE en anglais pour Integrated Development Environment). Au lycée, l’environnement choisi est Pyzo.
Commencez par identifier les différentes fenêtres qui vous sont accessibles:
– La fenêtre principale devrait être celle où vous pouvez écrire et enregistrer votre code dans un fichier
(dit « fichier source »). Elle possède des lignes numérotées sur la gauche qui vous permettent de vous
repérer facilement dans le fichier, notamment quand Python vous signalera l’existence d’un bug dans
votre programme.
– La console est le Python interactif, c’est-à-dire que vous pouvez y rentrer des commandes pour tester
leur comportement sans que ce soit sauvegardé dans un fichier (elle doit donc être cantonnée au rôle
de test rapide). Elle est facilement reconnaissable au symbole >>> qui commence chacune des lignes
où vous pouvez rentrer du code. C’est aussi à l’intérieur de celle-ci que sera exécuté le code de votre
fichier principal.
– La fenêtre d’aide est un accès direct à l’aide en ligne de Python dans laquelle vous pourrez rechercher
diverses informations sur la syntaxe ou les conditions d’utilisation de commandes données.
– Enfin, l’« Inspecteur » vous permet d’accéder directement à certaines parties de votre code une fois
que votre fichier aura acquis une certaine structure (en particulier via l’écriture de fonctions)
Avant de commencer à utiliser cet environnement, il est nécessaire de se familiariser avec lui en suivant
le cheminement ci-après:
– Ouvrez le fichier TP03_introduction_douce.py qui se trouve dans le sous-dossier Info/TP03/ de
votre dossier personnel.
– Écrivez print(’Hello World !’) dans la fenêtre principale (n’oubliez pas les apostrophes ni les
parenthèses).
– Repérez dans les menus comment sauvegarder votre fichier ainsi modifié et retenez le raccourci clavier
(Ctrl-S). (NB: par la suite, il ne sera nécessaire de sauvegarder qu’avant de quitter le programme
car l’exécution sauvegarde automatiquement les modifications effectuées précédemment. Néanmoins,
il est toujours plus sûr de faire un petit Ctrl-S de temps en temps pour ne pas perdre toutes ses
données si Windows plante..)
– Repérez dans les menus comment exécuter votre code et retenez le raccourci clavier. ATTENTION:
pour que les chemins d’accès soient correctement initialisés, il faut sélectionner « Exécuter en tant que
script » ou « Run file as script » (Ctrl-Shift-E). Faites-le et vérifiez que Hello World ! s’imprime
bien dans la console. Si au lieu de cela, il y a un message d’erreur, lisez-le bien et corrigez votre source
en conséquence. En cas de problème, demandez des conseils au personnel encadrant.
– Décommentez la ligne permettant de tester votre première fonction (sans l’avoir modifiée pour le
moment) et exécutez le script. Python devrait vous tancer vertement.
E Bougnol, JJ Fleck,
M Heckmann & M Kostyra,
Kléber, PCSI& -
II. Quelques exercices d’entraînement
2/4
Hello World !
test_hello_world (test_TP03.HelloTest) ... FAIL
======================================================================
FAIL: test_hello_world (test_TP03.HelloTest)
---------------------------------------------------------------------Traceback (most recent call last):
File ".../Info/TP03/test_TP03.py", line 15, in test_hello_world
self.assertEqual(hello_world(),'Hello World !')
AssertionError: 'Mais il va falloir changer des choses...' != 'Hello World !'
- Mais il va falloir changer des choses...
+ Hello World !
---------------------------------------------------------------------Ran 1 test in 0.121s
FAILED (failures=1)
– Retournez dans votre fichier source TP03_introduction_douce.py et modifiez-le pour que la fonction
hello_world() renvoie bien ’Hello World !’ et non la chaîne qui y est présente
1
2
3
def hello_world():
’’’Normalement, cela doit renvoyer Hello World !’’’
return ’Hello World !’
– Exécutez à nouveau (Ctrl-Shift-E) votre fichier. Python devrait à présent vous signaler que tout
va bien
test_hello_world (test_TP03.HelloTest) ... ok
---------------------------------------------------------------------Ran 1 test in 0.012s
OK
– Vous savez à présent comment ouvrir/enregistrer des fichiers, lancer des tests, etc. Vous êtes donc
prêts pour affronter la suite.
Partie II
Quelques exercices d’entraînement
Le fichier TP03_introduction_douce.py est déjà préécrit pour contenir des tests pour les fonctions
qu’il vous faut écrire. Pour lancer les tests concernant un exercice particulier, il vous suffit de décommenter
la ligne correspondante afin de vérifier votre avancée. Continuez à définir vos fonctions dans le même
fichier TP03_introduction_douce.py et implémentez les diverses fonctions suivantes (faites attention aux
conventions de nommage). On n’oubliera pas de commenter abondamment toutes les fonctions créées.
E Bougnol, JJ Fleck,
M Heckmann & M Kostyra,
Kléber, PCSI& -
1
II. Quelques exercices d’entraînement
3/4
Simple fonction
Écrire une fonction simple_fonction(x) qui renvoie la valeur de la fonction affine f telle que f (0) = 15
et f (10) = 0.
2
Fonction conditionnelle
Programmer dans fonction_conditionnelle(x) la fonction f définie de la manière suivante:

R −→ R







si x < 0
1
f:

x 7−→ x + 1 si x ∈ [ 0 ; 2 ]






−3x si x > 2
3
Tables de multiplication
Écrire une fonction table_mul(n,m) qui prend en argument deux entiers n et m et renvoie en sortie
une chaîne de caractères1 qui contient la table de multiplication de m pour les n premiers entiers. Par
exemple table_mul(11,15) doit renvoyer (sans espace, ni en début, ni en fin de ligne) sous forme de chaîne
1 fois 15 = 15
2 fois 15 = 30
3 fois 15 = 45
4 fois 15 = 60
5 fois 15 = 75
6 fois 15 = 90
7 fois 15 = 105
8 fois 15 = 120
9 fois 15 = 135
10 fois 15 = 150
11 fois 15 = 165
Il peut être utile de signaler que "\n" correspond au caractère indiquant un passage à la ligne dans une
chaîne de caractère.
4
Positivité
Construire une procédure booléenne positif(L) qui prend en entrée une liste L de nombres réels et
qui retourne True si tous les termes de la liste sont positifs ou nuls et False dans le cas contraire.
5
Chiffres à sommer
1. Proposer une procédure somme_chiffres(n) qui renvoie la somme tous les chiffres de l’écriture
décimale de l’entier n. Par exemple somme_chiffre(139) doit renvoyer 13 car 1 + 3 + 9 = 13.
2. Armé de cette procédure, écrivez-en deux autres: probleme_16() et probleme_20() qui, sans prendre
aucun argument, renvoient les réponses respectives des problèmes 16 et 20 du projet Euler, voir
http://projecteuler.net/problem=16
1
et
http://projecteuler.net/problem=20
Ce qui veut dire que vous ne devez pas utiliser l’instruction print à l’intérieur de la fonction en question.
E Bougnol, JJ Fleck,
M Heckmann & M Kostyra,
Kléber, PCSI& -
6
II. Quelques exercices d’entraînement
4/4
Quelle heure est-il ?
Un site de voyage permet de calculer les temps de parcours entre deux villes sous forme d’une liste à
4 éléments [jours,heures,minutes,secondes] représentant respectivement les durées en jours, heures,
minutes et secondes pour le voyage, le tout de manière unique, c’est-à-dire que 27 heures vaut en fait 1 jour
et 3 heures. Néanmoins, si vous faites plusieurs escales, vous voudriez bien connaître la durée totale que
vous aurez passée dans les transports. On va décomposer ce problème en plusieurs sous-problèmes plus
simples à résoudre.
1. Écrire une fonction decomposition(duree) qui prend en argument une durée exprimée en secondes
et renvoie une liste composée de quatre entiers sous la forme [jours,heures,minutes,secondes]
2. Écrire la fonction inverse secondes(L) qui prend en argument une liste L composée de quatre
entiers sous la forme [jours,heures,minutes,secondes] pour renvoyer la valeur correspondante
en secondes.
3. En utilisant les deux fonctions précédentes, écrire la fonction addition(L1,L2) qui va additionner
correctement deux listes L1 et L2 à quatre élements du type [jours,heures,minutes,secondes] et
renvoyer la liste du même type correspondant à la durée totale du voyage.
4. Écrire une fonction affichage(L) qui affiche le temps total passé en transport de manière un peu
plus lisible. Par exemple affichage([3,22,10,54]) doit répondre
Vous allez voyager un total de 3 jours, 22 heures, 10 minutes et 54 secondes
NB: Pour ne pas compliquer les choses, on ne s’occupera pas des « s » en trop dans le cas où l’on
devrait écrire « 1 heures » ou « 0 secondes »...
5. Enfin, écrire une fonction temps_total(liste_de_durees) qui prend en argument une liste (de
taille arbitraire) de durées sous la forme [jours,heures,minutes,secondes] et renvoie le temps
total de parcours à l’aide de la fonction affichage(L) précédente.
I occasionally do this with mile markers on the highway.
.com
Téléchargement