Nous avons vu qu'il est important de réfléchir
à la bonne organisation des séquences d'instructions en utilisant
correctement les conditionnelles, les itérations et les
fonctions. Cela répond à la question : quel traitement
effectuer ?
Mais il est aussi primordial de réfléchir à la
façon de stocker les données qui sont manipulées par le
programme. Dans ce chapitre, nous allons voir une structure
de données très largement utilisée : les listes.
Comme les chaînes de caractères, les listes sont des séquences, c'est à dire des collections d'objets ordonnés. Les objets placés dans une liste sont accessibles via un indice qui indique la place de l'objet dans la séquence, en utilisant la notation [i]
. Les listes sont délimitées par des crochets []
, les éléments sont
séparés par des ,
. Une liste peut contenir des objets de types différents.
# exemples simples sur les listes
# une liste de chaines de caractères
animaux = ["lion","loup","chat"]
# affiche loup
print(animaux[1])
# une liste avec des objets différents
listeMelangee = ["unMot",34,1.2,"unAutreMot"]
# affiche 35.2 (somme de 34 et 1.2)
print(listeMelangee[1]+listeMelangee[2])
# on peut modifier les éléments d'une liste
animaux[0] = "poule"
# affiche ['poule', 'loup', 'chat']
print(animaux)
# une liste de listes
matrice = [[1,2,3],[4,5,6],[7,8,9]]
# affiche [7, 8, 9]
print(matrice[2])
# affiche 7 (l'élément à l'indice 0 dans la liste à l'indice 2 de matrice
print(matrice[2][0])
# affiche 3 (l'élément à l'indice 2 dans la liste à l'indice 0 de matrice
print(matrice[0][2])
# les fonctions sur les listes
animaux = ["lion","loup","chat","poule","python"]
########################################################################
# fonctions élémentaires
########################################################################
# la longueur
print(len(animaux)) # affiche 5
# accès à une tranche d'éléments consécutifs
# l[i:j] renvoie la liste des éléments d'indices i à j-1
animaux1 = animaux[1:3]
animaux2 = animaux[:3]
animaux3 = animaux[2:]
# affiche ['loup', 'chat'];['lion', 'loup', 'chat'];['chat', 'poule', 'python']
print(animaux1,animaux2,animaux3,sep=';')
# concaténation de deux listes
print(animaux1+animaux2) # affiche ['loup', 'chat', 'lion', 'loup', 'chat']
########################################################################
# fonctions avec la notation .
# les listes sont des objets, auxquels on applique des "méthodes" (vu en CIP2)
########################################################################
# suppression
animaux.remove("lion")
print(animaux) # affiche ['loup', 'chat', 'poule', 'python']
# ajout d'un élément à la fin
animaux.append("truie")
print(animaux) # affiche ['loup', 'chat', 'poule', 'python', 'truie']
# insertion d'un élément
animaux.insert(2,"tigre")
print(animaux) # affiche ['loup', 'chat', 'tigre', 'poule', 'python', 'truie']
# recherche d'un élément
print(animaux.index("python")) # affiche 4
# print(animaux.index("tortue")) # provoque une erreur
# pour trier une liste
animaux.sort()
print(animaux) # affiche ['chat', 'loup', 'poule', 'python', 'truie']
l[i]=valeur
. Par contre, les chaines de caractères ne sont pas modifiables : écrire t[i]="a" si t est une chaine de caractères entrainera une erreur d'exécution.[1,"bon",5.67,["a","b","c"]]
calcul d'une moyenne pondérée donner les notes et les coefficients dans le même ordre les notes: 12 14 12 les coefficients: 1 1 1 la moyenne pondérée est 12.666666666666666 encore ? o calcul d'une moyenne pondérée donner les notes et les coefficients dans le même ordre les notes: 12 14 11 les coefficients: 3 5 2 la moyenne pondérée est 12.8 encore ? nNota: rien ne vous empêche d'utiliser ce programme pour calculer votre moyenne en PeiP1 ...
[[3,150,0,0],[6,50,-100,-100],[8,50,100,100]]
qui représente un triangle de coté 150 placé en (0,0), un hexagone de coté 50 placé en (-100,-100) et un octogone de coté 50 placé en (100,100). une liste: un entier: 3 après insertion [3] une liste: 4 6 9 un entier: 3 après insertion [3, 4, 6, 9] une liste: 1 2 4 6 8 un entier: 3 après insertion [1, 2, 3, 4, 6, 8]
[["Collavizza","Hélène",6],["Allais","Alphonse",14],["Reed","Lou",12]]On vous demande d'écrire un programme qui permet d'afficher les élèves et leurs notes, de calculer la moyenne de la classe et d'afficher le major de la promotion. Conseil: Vous devez écrire une fonction ou procédure pour chaque action possible. Exemple d'exécution :
Voulez-vous : 1. afficher les élèves 2. calculer la moyenne de la classe 3. trouver le major de promo 4. sortir votre choix : 3 Le major de promo est Alphonse Allais Voulez-vous : 1. afficher les élèves 2. calculer la moyenne de la classe 3. trouver le major de promo 4. sortir votre choix : 2 La moyenne de la classe est 10.666666