Vous êtes sur la page 1sur 6

Notebook séance 2

Les listes
https://python.sdv.univ-paris-diderot.fr/04_listes/
l = [1,2,3]
len(l)
3
l[0]
1
l[2]
3
Accès aux éléments par la gauche de la liste, avec des indices négatifs
l[-1]
3
l[-2]
2
Accès à des intervalles de la liste.
l[0:0]
[]
l[0:2]
[1, 2]
l[0:4]
[1, 2, 3]
l[0:6]
[1, 2, 3]
l[1:]
[2, 3]
l[:2]
[1, 2]
l[:-1]
[1, 2]

1
l[:]
[1, 2, 3]
On ne peut pas accèder à un élément qui n’existe pas.
l[7] = 4
---------------------------------------------------------------------------

IndexError Traceback (most recent call last)

<ipython-input-15-aac57e5864e7> in <module>
----> 1 l[7] = 4

IndexError: list assignment index out of range


l1 = [1,2,3]
l2 = [4,5,6]
On peut concaténer des listes.
l1 + l2
[1, 2, 3, 4, 5, 6]
l1.append(l2)
l1
[1, 2, 3, [4, 5, 6]]

Exercices sur les listes


Tous les exercices qui se trouvent dans le poly sont bons à faire. Voici ceux que
j’avais prévu de corriger avec vous et que je vous demande de traiter en premier.

4.9.1 Jours de la semaine


Constituez une liste semaine contenant les 7 jours de la semaine.
• À partir de cette liste, comment récupérez-vous seulement les 5 premiers
jours de la semaine d’une part, et ceux du week-end d’autre part ? Utilisez
pour cela l’indiçage.
• Cherchez un autre moyen pour arriver au même résultat (en utilisant un
autre indiçage).
• Trouvez deux manières pour accéder au dernier jour de la semaine.
• Inversez les jours de la semaine en une commande.

2
4.9.2 Saisons
Créez 4 listes hiver, printemps, ete et automne contenant les mois correspondants
à ces saisons. Créez ensuite une liste saisons contenant les listes hiver, printemps,
ete et automne. Prévoyez ce que renvoient les instructions suivantes, puis
vérifiez-le dans l’interpréteur :
• saisons[2]
• saisons[1][0]
• saisons[1:2]
• saisons[:][1]. Comment expliquez-vous ce dernier résultat ?
hiver = [ 'décembre', 'janvier', 'février' ]
printemps = [ 'mars', 'avril' , 'mai' ]
ete = [ 'juin', 'juillet', 'aout' ]
automne = [ 'septembre', 'octobre', 'novembre' ]
saisons = [ hiver, printemps, ete, automne ]
saisons[2]
['juin', 'juillet', 'aout']
saisons[1][0]
'mars'
saisons[1:2]
[['mars', 'avril', 'mai']]
saisons[:][1]
['mars', 'avril', 'mai']

4.9.3 Table de multiplication par 9


Affichez la table de multiplication par 9 en une seule commande avec les instruc-
tions range() et list().
list(range(9,90+1,9))
[9, 18, 27, 36, 45, 54, 63, 72, 81, 90]

4.9.4 Nombres pairs


Répondez à la question suivante en une seule commande. Combien y a-t-il de
nombres pairs dans l’intervalle [2, 10000] inclus ?
len(list(range(2,10000+1,2)))
5000

3
Les boucles
https://python.sdv.univ-paris-diderot.fr/05_boucles_comparaisons/
Elements de syntaxe : - les : qui marquent l’ouverture d’un bloc de code -
l’indentation qui permet de signifier quelles instructions sont dans le même bloc
de code
for element in saisons:
print(element)
['décembre', 'janvier', 'février']
['mars', 'avril', 'mai']
['juin', 'juillet', 'aout']
['septembre', 'octobre', 'novembre']
De l’importance de l’indentation, seules les instructions indentées sous le pour
appartiennent au même bloc et sont exécutées à chaque tour de boucle.
for element in saisons:
print(element)
print(element)
['décembre', 'janvier', 'février']
['mars', 'avril', 'mai']
['juin', 'juillet', 'aout']
['septembre', 'octobre', 'novembre']
['septembre', 'octobre', 'novembre']
Python demande à ce que les indentations soient toutes les mêmes. Ici cela crée
une erreur.
for element in saisons:
print(element)
print(element)
File "<tokenize>", line 3
print(element)
^
IndentationError: unindent does not match any outer indentation level
for i in range(len(saisons)):
print(saisons[i])
['décembre', 'janvier', 'février']
['mars', 'avril', 'mai']
['juin', 'juillet', 'aout']
['septembre', 'octobre', 'novembre']
La boucle tant que permet d’itérer et de s’arrêter sur une condition et non de
parcourir toutes les valeurs d’un ensemble.

4
i = 0
while i < len(saisons):
print(saisons[i])
i += 1
['décembre', 'janvier', 'février']
['mars', 'avril', 'mai']
['juin', 'juillet', 'aout']
['septembre', 'octobre', 'novembre']
Si on sait à l’avance le nombre de tours de boucles, on utilise la boucle pour.
Si la condition d’arrêt de la boucle évolue au fur et à mesure du déroulement de
celle-ci, on utilise la boucle tant que.
import random
l = random.sample(range(1,100), 50)
print(l)
# recherche de la suite des nombres croissants en début de liste
i = 0
while i < len(l)-1 and l[i] < l[i+1]:
print(l[i])
i +=1
[5, 84, 45, 14, 49, 69, 41, 28, 17, 15, 48, 68, 34, 67, 33, 74, 99, 16, 25, 78, 53, 59, 43,
5

Exercices sur les boucles


5.4.4 Nombres pairs et impairs
Soit impairs la liste de nombres [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21].
Écrivez un programme qui, à partir de la liste impairs, construit une liste pairs
dans laquelle tous les éléments de impairs sont incrémentés de 1.
l = []
for nombre_impair in [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21]:
l.append(nombre_impair + 1)
l
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22]

5.4.6 Produit de nombres consécutifs


Avez les fonctions list() et range(), créez la liste entiers contenant les nombres
entiers pairs de 2 à 20 inclus.
Calculez ensuite le produit des nombres consécutifs deux à deux de entiers en
utilisant une boucle. Exemple pour les premières itérations :

5
produit de 2 et 4 : 8 produit de 4 et 6 : 24 produit de 6 et 8 :
48 [...]
pairs = list(range(2,20+1,2))
for i in range(len(pairs)-1):
print("produit de {} et {} : {}".format(pairs[i],pairs[i+1],pairs[i]*pairs[i+1]))
produit de 2 et 4 : 8
produit de 4 et 6 : 24
produit de 6 et 8 : 48
produit de 8 et 10 : 80
produit de 10 et 12 : 120
produit de 12 et 14 : 168
produit de 14 et 16 : 224
produit de 16 et 18 : 288
produit de 18 et 20 : 360

5.4.13 Sauts de puce


On imagine une puce qui se déplace aléatoirement sur une ligne, en avant ou en
arrière, par pas de 1 ou -1. Par exemple, si elle est à l’emplacement 0, elle peut
sauter à l’emplacement 1 ou -1; si elle est à l’emplacement 2, elle peut sauter à
l’emplacement 3 ou 1, etc.
Avec une boucle while, simuler le mouvement de cette puce de l’emplacement
initial 0 à l’emplacement final 5 (voir le schéma de la figure 3). Combien de sauts
sont nécessaires pour réaliser ce parcours ? Relancez plusieurs fois le programme.
Trouvez-vous le même nombre de sauts à chaque exécution ?
Conseil : vous utiliserez l’instruction random.choice([-1,1]) qui renvoie au hasard
les valeurs -1 ou 1 avec la même probabilité. Avant d’utiliser cette instruction
vous mettrez la ligne import random dans un cellule.
import random
random.choice([-1,1])
1
position = 0
nb_sauts = 0
while position != 5:
position += random.choice([-1,1])
nb_sauts += 1
print("la puce a réalisé {} sauts".format(nb_sauts))
la puce a réalisé 147727 sauts

Vous aimerez peut-être aussi