def interro(message,reponse):
r=eval(input(message))
if r==reponse:
print("Félicitation, la réponse est correcte")
else:
print("Erreur : la réponse était ",reponse)
Les listes sont des objets très importants en Python car elles permettent de stocker de multiples informations dans une seule variable.
Pour déclarer une liste, la syntaxe est la suivante :
ma_liste=[1,2,3,4,5,6,7,8,9]
print(ma_liste)
Exécutez et analysez la cellule suivante qui illustre ces propriétés :
ma_liste=[1,2,"un texte",3==4,[3,4]]
print(ma_liste[0])
print(ma_liste[2])
interro("Que vaut l'expression ma_liste[3] ?",ma_liste[3])
interro("Quel indice ma_liste[?] faut-il mettre pour récupérer la liste [3,4] ?",ma_liste.index([3,4]))
Créez une variable *liste_carres* contenant la liste les carrés des entiers de 1 à 10
liste_carres = [1,5,9,16,25,36,49,64,81,100]
Il est possible de modifier un élément particulier d'une liste. Il suffit de faire une affectation au moyen du signe = comme pour une simple variable. Observez plutôt :
liste_carres[1]=4
print(liste_carres)
On peut rechercher si un élément dans une liste. Par exemple pour savoir si 25 est un carré, on peut taper la ligne suivante.
Manipulez cette fonction en testant des nombres qui sont dans la liste et d'autres qui n'y sont pas.
On sera frappé par la similitude entre la syntaxe de python et le langage naturel. Cette simplicité est une des forces de Python.
25 in liste_carres
Validez la cellule suivante en essayant les valeurs 36 puis 72 puis 123
nombre=eval(input("Saisir un nombre "))
if nombre in liste_carres:
print(nombre,"est un carré")
elif nombre <= 100:
print("nombre n'est pas un carré")
else:
print("Je ne sais pas répondre")
Vous remarquerez une version élaborée de la structure if: ... else ... :
Le mot clé *elif* est la contraction de *else* et de *if. Cette structure permet de tester plusieurs conditions à la suite. Ici, cela sert à prendre en compte le fait que notre liste_carres* ne connaît que les carrés jusqu'à 100.
On peut mettre deux listes bout à bout comme on le voit sur l'exemple suivant. On remarque l'utilisation naturelle du signe '+' pour ajouter deux listes bout à bout.
liste_carres=liste_carres + [121,144,169,196,225]
print(liste_carres)
De même qu'on possède l'opération +, il existe aussi l'opération * pour obtenir une liste formée de plusieurs fois la même liste. Je vous laisse découvrir le fonctionnement de cet opérateur dans la cellule ci-dessous :
3*[1,2,4]
Pour savoir combien d'éléments contient une liste, on peut utiliser la fonction *len()*.
Testez aussi les fonctions *min()* et *max()* sur la liste_carres. A quoi servent elles ?
len(liste_carres)
print(min(liste_carres),max(liste_carres))
Pour connaître la position d'un objet dans une liste, on peut utiliser la méthode *.index(). Elle s'utilise comme suit. Que se passe t-il si l'objet recherché n'appartient pas à la liste ?
liste_carres.index(81)
De la même manière, on peut compter le nombre d'éléments dans une liste. Pour cela, on utilise la méthode *.count()* de manière similaire à *.index(). Pour vous exercer, ajouter à liste_carres* la liste [121,81,169,81] et comptez le nombre d'occurences du nombre 81.
# A vous de jouer dans cette cellule
liste_carres=liste_carres+[121,81,169,81]
print(liste_carres)
print("81 apparait ",liste_carres.count(81),"fois")
Il arrive très fréquemment d'avoir besoin d'accéder à tous les éléments d'une liste les uns après les autres. La boucle for est particulièrement adaptée à cet usage comme vous allez le voir :
Exécutez et analysez l'exemple suivant :
mois=["Janvier", "Février", "Mars", "Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Décembre"]
for m in mois:
print("le joli mois de",m)
Ce code est équivalent à une boucle for plus classique en gérant l'indice du tableau manuellement :
for indice in range(12):
print("le joli mois de",mois[indice])
Ecrire un programme qui affiche à côté de chaque mois le nombre de jours. Vous utiliserez une boucle et la liste proposée ci-dessous. L'affichage ressemblera à ceci:
Le mois de Janvier possède 31 jours Le mois de Février possède 28 ou 29 jours etc...
jours=[31,"28 ou 29",31,30,31,30,31,31,30,31,30,31]
mois=["Janvier", "Février", "Mars", "Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Décembre"]
# A vous de jouer