Introduction à Python - CPGE du Lycée Montesquieu

publicité
Introduction à Python
Résumé
Dans ce TP, nous allons aborder plusieurs thèmes en situation réelle. Nous vous proposons un
script python déjà formé ; vous allez devoir l’analyser, le comprendre et le modifier. Ce TP dure deux
heures, pensez à conserver une trace écrite de votre travail.
1
Début de la séance
Pour pouvoir effectuer cette séance, vous devez télécharger le fichier TP2-eleves.py depuis le dossier
Informatique du répertoire de votre classe. Sauvegardez-le sur votre espace de travail et ouvrez-le dans
Pyzo.
Combien de lignes comporte ce fichier ?
Quelle bibliothèque est utilisée dans ce TP ? Renseignez-vous sur cette bibliothèque : à quoi sert-elle ?
Nous vous recommandons de sauvegarder régulièrement votre travail. Lorsque l’on exécute un programme
que l’on a fait soi-même, il est tout à fait possible de faire planter la machine et donc de perdre son travail.
2
Utilisation de l’environnement
Nous allons ici étudier certains raccourcis clavier. Dans Pyzo, cliquez sur le menu Exécuter.
À quoi correspondent les raccourcis Alt+Entrée , Ctrl+E ?
Cliquez maintenant sur le menu Shell.
À quoi correspondent les raccourcis Ctrl+L, Ctrl+K ?
Dans la fenêtre de script, exécutez une première fois l’ensemble de la page en utilisant un raccourcis
clavier. Observez l’affichage dans la fenêtre de terminal et suivez les instructions. À la question “Quel est
le numéro de la liste que vous voulez trier ? “, répondre le chiffre 2.
Que semble faire ce script ?
Sélectionnez ensuite les lignes 87 et 88. Activez la combinaison de touches Alt+Entrée.
Comment interprétez-vous le résultat affiché dans le terminal ?
Activez maintenant la combinaison Ctrl+L puis sélectionnez les lignes 87 et 88 et effectuer la combinaison Alt+Entrée. Quel est le rôle de la combinaison Ctrl+L ?
Faites la combinaison Ctrl+K puis sélectionnez les lignes 87 et 88 et effectuer la combinaison
Alt+Entrée. Comment interprétez-vous le résultat ? Quel est le rôle de la combinaison Ctrl+K ?
3
Compréhension du script
Exécutez une nouvelle fois le programme, en répondant 0 à la question posée.
Lorsque vous exécutez le script complet, le terminal vous affiche la liste L0 telle que définie dans le script.
Il n’est cependant rien affiché concernant les autres listes. Nous allons remédier à cela.
Quelles sont les lignes qui prennent en charge l’affichage de la liste L0 ?
Combien de listes sont définies ? À quelles lignes du programme sont-elles mélangées ?
Modifier le programme afin que toutes les listes soient affichées, une première fois lors de leur définition
puis une seconde fois après leur mélange.
Quel est le nom de la principale procédure définie dans ce script ? À quelle ligne est-elle appelée ? En
étudiant ses spécifications (nom, documentation, commentaires) précisez son rôle.
1
. Bien maîtriser
son
environnement de travail
est important. Les
raccourcis clavier
vous permettent de
gagner du temps.
4
Test de la fonction triBulle
Nous allons à présent nous focaliser sur la fonction nommée triBulle. Vous savez maintenant le rôle
de cette procédure. Puisque vous avez déjà exécuté l’ensemble de la page, la fonction triBulle est en
mémoire dans le terminal. Vous pouvez donc l’appeler directement depuis le celui-ci.
Exécutez la commande >>> triBulle([3,2,4,1,5]). Que se passe-t-il ?
Exécutez la commande >>> L=[3,2,4,1,5] ; triBulle([3,2,4,1,5]); L. Que se passe-t-il ?
Exécutez la commande >>> L=[3,2,4,1,5] ; triBulle(L) ; L. Que se passe-t-il ?
Comment expliquez-vous ces différences ?
Jusqu’à présent, vous n’avez exécuté la fonction triBulle que sur des listes d’entiers. Nous allons étudier
le cas d’autres types de listes.
Créez une liste contenant les entiers de 1 à 5 puis la lettre a entre guillemets. Exécutez la fonction
triBulle sur cette liste. Comment interprétez-vous le message d’erreur ?
Créez une liste contenant la première ligne de lettres de votre clavier chacune entre guillemets. On
aura par exemple L = ["a","z","e","r","t","y","u","i","o","p"]. Appelez la fonction triBulle
sur cette liste, puis affichez L. Que peut-on en déduire de l’opérateur de comparaison en Python ?
Créez une liste contenant des mots. Appelez la fonction triBulle sur cette liste, puis affichez-la. Que
peut-on en déduire sur l’opérateur de comparaison en Python ?
5
Étude poussée de la fonction triBulle
Pour réaliser cette section, vous devez lire attentivement la fonction triBulle.
Testez la fonction len(). Que rend-t-elle ?
Exécutez la commande >>> for i in range(4): print (i) et comprendre cette instruction.
Déroulez à la main l’algorithme de la fonction triBulle sur la liste [3,1,4,2]. Avez-vous effectué des
opérations inutiles ? Y’a-t-il des variables qui sont définies et que vous n’avez pas utilisées ?
Afin d’éviter ces opérations inutiles, proposez une amélioration de la fonction triBulle.
La variable nbechanges est globale et peut donc être modifiée à l’intérieur d’une fonction. Ajoutez une
ligne à la fonction echange qui incrémente la variable nbechanges à chaque échange de données.
. On rappelle que
pour inverser une
liste L, il suffit de
taper L[::-1]
Exécutez la fonction triBulle sur une liste quelconque de 20 éléments, sur une liste de 20 éléments
triée, puis sur une liste de 20 éléments triée à l’envers. À chaque fois, affichez la variable nbechanges
et relevez le nombre d’échanges effectués. Comparez ces résultats entre les deux versions de triBulle.
L’amélioration est-elle efficace sur le nombre d’échanges ?
En vous inspirant de ce qui a été fait pour le nombre d’échanges, créez un compteur pour le nombre
de comparaisons. Refaire les mêmes tests que précédemment. Votre amélioration est-elle efficace pour le
nombre de comparaisons ?
Conjecturez dans chacun des cas (amélioré ou non) une formule donnant le nombre de comparaisons
en fonction de la taille de la liste initiale. Vérifiez votre conjecture sur des listes de différentes tailles.
Peut-on effectuer le même raisonnement sur le nombre d’échanges ?
6
Étude d’un autre algorithme de tri
Dans cette section, nous allons voir que pour une même tâche, il existe plusieurs algorithmes. En particulier, il existe de nombreux types de tris : certains sont adaptés à des données pour lesquelles l’échange
est facile, d’autres à des données pour lesquelles la comparaison est difficile.
. La complexité
du tri fusion est
optimale : il n’est
pas possible de trier
plus
rapidement
une liste d’objets.
Apportez les modifications nécessaires au script afin de pouvoir utiliser le tri Fusion. On rappelle que
la combinaison Ctrl+R permet de commenter un groupe d’instructions et que la combinaison Ctrl+T
permet de les décommenter.
Exécutez le tri Fusion sur différentes listes et relevez les nombre d’échanges et de comparaisons. Que
peut-on dire sur ce tri par rapport au tri à Bulles ?
Conjecturez une formule explicitant le nombre de comparaisons en fonction de la taille de la liste
initiale. Effectuez une comparaison avec le tri à Bulles.
2
TP Informatique - Introduction à Python
Lycée Montesquieu
7
Pour aller plus loin
Si vous avez terminé et fait valider votre travail par votre encadrant, vous pouvez vous attaquer aux
questions suivantes.
Modifiez la fonction triBulle afin qu’elle trie les éléments à l’envers.
Modifiez la fonction triBulle afin qu’elle affiche au fur et à mesure l’évolution de la liste.
Lorsque vous triez des cartes, vous n’utilisez pas le tri à bulles. Écrivez l’algorithme de tri des cartes.
Écrivez une fonction appelée triCarte qui prendra en argument une liste d’entiers et effectuera son tri à
la façon d’un jeu de cartes.
TP Informatique - Introduction à Python
Lycée Montesquieu
3
Téléchargement