#!/usr/bin/env python # coding: utf-8 # ### Validez la cellule suivante avant de commencer ce classeur # In[ ]: 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) # # Découverte des objets listes # 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 : # In[ ]: ma_liste=[1,2,3,4,5,6,7,8,9] print(ma_liste) # - Une liste est délimitée par des crochets. Elle contient autant de valeurs que la mémoire de l'ordinateur le permet. # - Le contenu d'une liste peut être de n'importe quel type (nombre, chaîne de caractères, voir même liste !!) # - On peut accéder à chaque élément d'une liste en utilisant un indice. Les indices de liste commencent à 0. # # Exécutez et analysez la cellule suivante qui illustre ces propriétés : # In[ ]: ma_liste=[1,2,"un texte",3==4,[3,4]] print(ma_liste[0]) print(ma_liste[2]) # ### Quelques questions... # In[ ]: interro("Que vaut l'expression ma_liste[3] ?",ma_liste[3]) # In[ ]: interro("Quel indice ma_liste[?] faut-il mettre pour récupérer la liste [3,4] ?",ma_liste.index([3,4])) # ### Premières manipulations sur les listes # Créez une variable ***liste_carres*** contenant la liste les carrés des entiers de 1 à 10 # In[ ]: 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 : # In[ ]: 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. # In[ ]: 25 in liste_carres # ### Exemple : tester si un nombre est un carré # Validez la cellule suivante en essayant les valeurs 36 puis 72 puis 123 # In[ ]: 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. # ## Manipuler les listes # 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. # In[ ]: 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 : # In[ ]: 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 ? # In[ ]: len(liste_carres) # In[ ]: 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 ? # In[ ]: 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. # In[ ]: # 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") # ### Parcourir une liste # # 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 : # In[ ]: 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 : # In[ ]: for indice in range(12): print("le joli mois de",mois[indice]) # ### A vous de jouer # # 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... # In[ ]: 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 # In[ ]: