Vous êtes sur la page 1sur 6

TP n°6 – Python – 2nde S.N.

T
1. Les listes en Python
a. Généralités
Nous avons déjà vu que l’on pouvait créer une liste en langage Python dans le TP
n°3.
Une liste en Python c’est une succession de valeurs, de n’importe quel type,
séparées par des virgules, le tout entre crochet.
Par exemple, [1.5,’Bonjour’,-6] est une liste composée d’un flottant, d’une chaine
de caractère et d’un entier.
Une liste est un type pour Python : list.
Comment gérer les éléments d’une liste ?
Dans un premier temps, regardons comment prendre un élément dans une liste. Il
faut déjà comprendre qu’une liste est une suite de valeurs, dans un ordre
particulier, définissant sa position dans la liste. Cependant, le comptage des
éléments commence à 0 (zéro), et non à 1. Pour « prendre » le premier élément de
la liste, il faut donc demander de prendre l’élément de position 0 :

On voit donc que la commande à saisir est liste[…], avec la position entre les
crochets.
Et si on dépasse la position maximale (ici la position maximale est 2), par exemple
4:

Et avec un nombre négatif :

On remarque donc que la position [-1] correspond à la position [2], et [-3] à [0]…
Au-delà de [-3], on se retrouve avec la même erreur que si on dépasse [2]…

On peut aussi vouloir un morceau de la liste, par exemple les deux derniers
éléments :

Page 1 sur 6
TP 6 Python S.N.T. 2nde
La syntaxe est donc liste[a :b], où a est la position du premier élément de la liste
souhaité, et b est « la position + 1 » du dernier élément voulu, d’où « 3 » pour avoir
le dernier élément de notre liste qui est « 2 »…
Prenons une liste plus longue et regardons différentes syntaxes :

On remarque que la commande list(range(n)) crée une liste des entiers de 0 à (n-
1), où la position est égale à la valeur ; c’est donc un moyen simple de comprendre
la numérotation dans une liste.
Quelle(s) syntaxe(s) pour obtenir la valeur 4 ? On a deux possibilités :
l[4] ou l[-6] puisque 4 – 10 = -6.

b. Les opérations
La première opération est l’ajout d’un élément à une liste, après la création d’une
liste avec la commande append (qui signifie "ajouter" en anglais) :

La valeur « 10 » s’est « ajoutée » à la fin de la liste…


Remarque : On peut aussi utiliser la syntaxe, mais il vaut mieux éviter de faire
ainsi :

Cela ne fonctionne que pour l’ajout d’une valeur à une liste.

Il est parfois nécessaire de supprimer une entrée de la liste. Pour cela vous pouvez
utiliser la fonction del :

Page 2 sur 6
TP 6 Python S.N.T. 2nde
Cette commande utilise la position dans la liste. Une autre méthode utilise la valeur
dans la liste, avec la commande remove :

Vous pouvez inverser les items d'une liste avec la commande reverse :

Il est possible de compter le nombre d'items d'une liste avec la commande len(…) :

Prenons une nouvelle liste où il y a plusieurs valeurs égales, et regardons comment


compter les occurrences d’une valeur :

Il faut donc utiliser la commande count avec l’élément voulu.

On peut aussi vouloir avoir la position d’une valeur, du moins, sa première


apparition, avec la commande index :

c. Et les chaines de caractères ?


Pour Python, une chaine de caractère est une liste de lettre particulière… Pour en
être sûr, regardons la syntaxe suivante :

Page 3 sur 6
TP 6 Python S.N.T. 2nde

Ainsi, on peut extraire un morceau d’une chaine de caractère comme dans une
liste. En revanche, les commandes append, remove, del, reverse ne fonctionnent
pas ! Les autres commandes sont possibles !

2. Le tri (les étapes seront à faire l’une après l’autre, après le bilan)
a. Première étape
Sans utiliser l’ordinateur, en travaillant seul, réfléchir à un processus (algorithme)
pour trier par ordre croissant une liste de nombres entiers positifs.
Vous pouvez prendre pour exemple la liste :
[5,9,2,7,4,6,10,2,11]
Nous ferons un bilan.

b. Deuxième étape
Toujours sans ordinateur, mais en groupe (3-4 élèves), réfléchir maintenant pour
trier la même liste, mais sans création d’une nouvelle liste, i.e. dans la même liste.
Nous ferons un bilan

c. Troisième étape
Sur l’ordinateur maintenant, aller à l’adresse :
http://lwh.free.fr/pages/algo/tri/tri.htm
- Découvrir si les algorithmes trouvés précédemment s’y trouvent et leur nom.
- Effectuer les tests de tri avec 100 éléments, et en choisissant un ordre initial
aléatoire, puis le meilleur des cas, et finir par le pire des cas.
- Essayer de comprendre les différences observées.

Sur l’ordinateur toujours, choisir deux algorithmes de tri dans la liste (un « stable »,
un « non stables ») et en faire la programmation sous Python (en s’aidant de la page
web).
Tester vos syntaxes avec l’exemple de la première étape.

Page 4 sur 6
TP 6 Python S.N.T. 2nde
EXERCICES DE SYNTHÈSE
Voici des questions pour contrôler vos connaissances en Python. Cela reprend plusieurs points
des TP précédentes et permet de vérifier le niveau d’acquisition des compétences liées à
l’utilisation de ce langage.
Les questions sont à traitées dans l’ordre, elles sont de difficultés croissantes, puisque de
moins en moins guidées.
L’ensemble des fonctions sont à mettre dans un même fichier Python nommé TP_Final.py.
1) Ouvrir Pyzo

2) Définir une fonction Python sans attribut bonjour() qui :


- Demande à l’utilisateur son nom, dans la variable nom ;
- Demande à l’utilisateur son prénom, dans la variable prenom ;
- Affiche la phrase « Bonjour prenom, je suis la console Python PYZO. Ton nom de
famille est nom. ».

3) Définir une fonction Python sans attribut age_user() qui :


- Demande à l’utilisateur son prénom, dans la variable prenom ;
- Demande à l’utilisateur son année de naissance, dans la variable annee ;
- Demande à l’utilisateur son mois de naissance (format nombre), dans la variable mois ;
- Demande à l’utilisateur son jour de naissance (nombre), dans la variable jour ;
- Calcul l’âge de l’utilisateur, dans la variable age ;
- Affiche la phrase « Bonjour prenom, tu as age. ».

4) Définir une fonction Python sans attribut temps() qui :


- Demande à l’utilisateur l’heure de départ d’un train au format « xxhyy », dans la
variable depart ; tant que le format n’est pas bon, il repose la question ;
- Demande à l’utilisateur l’heure d’arrivée d’un train au format « xxhyy », dans la
variable arrivee ; tant que le format n’est pas bon, il repose la question ;
- Calcul la durée en heures, minutes en tenant compte d’un éventuel train de nuit, les
heures dans la variable XX et les minutes dans la variable YY ;
- Affiche la phrase « Le trajet en train dure XXhYY. »

5) Définir une fonction Python avec attribut somme_et_produit(a,b) qui :


- Affiche la somme de a et b ;
- Renvoie le produit de a par b.
ATTENTION « afficher » et « renvoyer » ne sont pas la même chose…

6) Définir une fonction Python sans attribut somme_et_produit2() qui :


- Demande à l’utilisateur un nombre entier a, et repose la question tant que la saisie
n’est pas un nombre entier ;
- Demande à l’utilisateur un nombre entier b, et repose la question tant que la saisie
n’est pas un nombre entier ;
- Affiche le produit de a par b ;
- Renvoie la somme de a par b.
Page 5 sur 6
TP 6 Python S.N.T. 2nde

7) Définir une fonction Python avec attribut liste_carres(n) qui renvoie la liste des carrés
des entiers de 1 à n.

8) Définir une fonction Python sans attribut liste_carres2() qui :


- Demande à l’utilisateur un nombre entier n, et repose la question tant que la saisie
n’est pas un nombre entier ;
- Renvoie la liste des carrés des entiers de 1 à n.

9) Définir une fonction Python sans attribut liste_carres_p() qui :


- Demande à l’utilisateur un nombre entier n, et repose la question tant que la saisie
n’est pas un nombre entier ;
- Renvoie la liste des carrés des entiers pairs uniquement de 1 à n.

10) Définir une fonction Python avec attribut seuil(n) qui :


- Calcul la racine carrée des entiers tant que le résultat est inférieur à n² ;
- Renvoie la dernière racine calculée et le nombre de racines calculées.

ATTENTION : il faut penser à importer la librairie math, voir d’autres si nécessaire,


dont certaines jamais encore utilisées… Ce n’est pas une obligation pour les autres
librairies, il n’y a que math qui est obligatoire pour répondre aux questions…

Page 6 sur 6

Vous aimerez peut-être aussi