Licence LICDA : Ingénierie de Conception et Développement d’Applications Fatima RAFII ZAKANI [email protected] 2022/2023 Plan Introduction PYTHON EST-IL UN LANGAGE INTERPRÉTÉ ? Console Python Variables Declaration Type Identité Operations sur les variables Suppression Lecture d’une saisie Plan Formatage de chaı̂ne de caractère Commentaires Structures conditionnelles if if ... else if ... elif ... else pass Plan Structures itératives while while ... break while ... continue while ... else for for ... break ... else Collections (tableaux dynamiques) List Tuple Set Dictionary Variable (objet) muable (mutable) Plan Fonctions Déclaration et appel Fonction récursive Fonction à multi-valeurs de retour Fonction retournant une fonction Paramètres avec valeur par défaut Opérateur * Opérateur ** Variables locales et globales Fonction Lambda Introduction Python Python ? Langage de programmation Orienté objet et procédural A typage dynamique Fortement typé (Impossible de concaténer une chaı̂ne et un entier sans convertir l’entier en chaın ˆ e) Première version créée par Guido van Rossum en 1991 puis par Python Software Foundation depuis la version 2 en 2001 Introduction Python Python, pourquoi ? Langage de haut niveau Qui doit sa popularité à sa polyvalence, mais aussi à sa flexibilité et sa facilité d’utilisation. Il est un langage de programmation relativement simple à comprendre et donc à apprendre. Considéré comme le langage le plus apprécié par les débutants en programmation, qui le préfèrent aujourd’hui à Java. Gestion automatique et dynamique de mémoire : ramasse-miettes, pas de pointeur, pas d’allocation de mémoire...système de gestion d’exceptions Disposant d’une bonne documentation, des supports videos, plusieurs exemples sur internet Introduction Python c I H L très évolués et Développement Web : disposant des frameworks E U très populaires comme Django MO L E Machine Learning et Data Science Data : très utilisé en e Big f Data, r h c Script : instructions c A simples à exécuter dans une console Python : multi-domaine Introduction Python Compilation VS Interprétation Concernant les langages de programmation on retrouve deux catégories principales : - Langages compilés - Langages interprétés. Introduction Python Python fait partie des langages interprété Qu'est-ce qu'un langage interprété ? - Un langage interprété est un langage qui est lu ligne par ligne par un interpréteur. - L'interpréteur va passer à travers chaque ligne du code Python pour le traduire en langage machine. - C'est donc tout l'inverse des langages dits compilés qui nécessitent un processus appelé compilation, qui va compiler le code afin de générer un exécutable. Introduction Python Compilation VS Interprétation Un langage interprété, c'est donc tout d'abord un langage qui a besoin d'un interpréteur pour fonctionner. Dans le cas de Python on parle donc de l'interpréteur Python. Introduction Python L'interpréteur Python L'interpréteur Python, c'est l'application avec laquelle vous allez exécuter votre script Python. Sur Windows, c'est l'exécutable python.exe qui se trouve à l'intérieur du dossier dans lequel vous avez installé Python (par exemple C: \Python37\python.exe). Sur macOS ou Linux, ce fichier se trouve généralement dans /usr/local/bin/python3.7. Compilation Python Intrerpretation Python Intrerpretation Python Compilation : avantage Compilation : inconvénient Plus rapide. Recompiler après chaque modification. Interprétation : avantage Interprétation : inconvénient Vue immédiate sur le code et apporter des modifications instantanément. Exécution 10 à 100 fois plus lente. Console Python Python Consoles Python Allez dans la barre de recherche de Windows Cherchez : - Python 3.8 et ouvrez la console (invite de commandes), ou - IDLE Python 3.8 et ouvrez la console (Power Shell) c Introduction Python L'interpréteur Python On reconnaît qu'on est dans un interpréteur Python interactif grâce aux trois signes plus grand que (>>>). Pour sortir de l'interpréteur Python, on utilise la commande exit(). Introduction Python Quelques versions de Python Python 1 (sortie en 1991) Python 1.5 (sortie en avril 1999) Python 1.6 (sortie en septembre 2000) I ELH Python 2.0 (sortie en octobre 2000) U O LM Python 2.1 (sortie en avril 2001) Python 2.6 (sortie en octobre 2008) c Achref Python 2.7 (sortie en juillet 2010) E Python 3.0 (sortie en décembre 2008) Python 3.1 (sortie en juin 2009) Python 3.7 (sortie en janvier 2018) Python 3.8 (sortie en octobre 2019) Python 3.9 (sortie en octobre2020) Python 3.10 (sortie en octobre2021) c Introduction Introduction Python : téléchargement https://www.python.org/downloads/ Python Les r ègles de nommage c I H L (packages) : Variables, fonctions, méthodes, fichiers (modules) et Edossiers U snake_case O M L Constantes : snake_case (All E Caps, en français tout en majuscule en séparant f e r les mots par des underscores) h c A Modules c et packages, on conseille d’utiliser des noms courts. Classes et exceptions : PascalCase Packages, on d éconseille d’utiliser les underscores Normes des instructions Python Python Normes des instructions Python 80 caractères maximum par ligne. 4 espaces pour l’indentation (pas de tabulation). 2 lignes de séparations entre les différents éléments. 1 ligne vide à la fin de chaque fichier de code. 1 espace après : mais pas avant 1 espace avant et après chaque opérateur 1 instruction par ligne Console Python Python Remarques en mode console Une instruction Python commence par >>> Le résultat de l’instruction est affiché à la ligne sans >>> Afficher Hello world en Python >>> print("Hello world") Hello world Console Python Python Console simple vs IDLE (Integrated Development and Learning Environment) Note ! : IDLE n'est pas un interpréteur Python en tant que tel, c'est un environnement de développement intégré avec Python qui utilise la librairie graphique Tkinter. IDLE = console + coloration du code + auto-complétion + indentation automatique + .... Console Python Python En utilisant une console Python, on peut effectuer des opérations arithmétiques >>> 3+2 5 Console Python Python En utilisant une console Python, on peut effectuer des opérations arithmétiques >>> 3+2 5 Ou des tests logiques >>> 3+2>1+7 False Variables Python Une variable ? Un pointeur vers une zone mémoire Permettant de stocker une ou plusieurs données Pouvant avoir plusieurs valeurs différentes dans un programme Variables Python Une variable ? Un pointeur vers une zone mémoire Permettant de stocker une ou plusieurs données Pouvant avoir plusieurs valeurs différentes dans un programme Python est un langage de programmation fortement typé, mais Pas de type à préciser pour les variables Une variable peut changer de type Impossible de concaténer une chaı̂ne et un nombre sans conversion Variables Python Caractéristiques d’une variable Son nom dans le programme Son type Son identité Variables Python Pour déclarer une variable >>> x = 2 Déclaration Variables Python Pour déclarer une variable >>> x = 2 Pour afficher une variable >>> x 2 Déclaration Variables Python Pour déclarer une variable >>> x = 2 Pour afficher une variable >>> x 2 Pour utiliser une variable >>> x + 3 5 Déclaration Variables Déclaration Python Pour déclarer plusieurs variables et leur affecter une même valeur >>> a = b = c = 1 Variables Déclaration Python Pour déclarer plusieurs variables et leur affecter une même valeur >>> a = b = c = 1 Pour afficher les valeurs respectives des variables précédentes >>> a, b, c (1, 1, 1) Variables Déclaration Python Pour déclarer plusieurs variables et leur affecter une même valeur >>> a = b = c = 1 Pour afficher les valeurs respectives des variables précédentes >>> a, b, c (1, 1, 1) Pour déclarer plusieurs variables et leur affecter des valeurs différentes >>> d, e, f = 1, 2, "bonjour" Variables Type Python Une variable peut changer de type >>> x = ’bonjour’ >>> type(x) <class ’str’> c Une variable peut changer de type >>> x = 1 Pour déterminer le type d’une variable >>> type(x) <class 'int'> c Variables Python Exemple avec les booléens >>> type(True) <class ’bool’> Type Variables Python Exemple avec les booléens >>> type(True) <class ’bool’> Exemple avec les nombres réels >>> type(2.8) <class ’float’> Type Variables Type Python Exemple avec les booléens >>> type(True) <class ’bool’> Exemple avec les nombres réels >>> type(2.8) <class ’float’> Exemple avec les nombres complexes >>> type([1, 2]) <class ’list’> Variables Type Python Pour récupérer le nom du type sous forme d’une chaı̂ne de caractères >>> val = 2 >>> val.__class__.__name__ ’int’ >>> type(val).__name__ ’int’ c Variables Type Python Pour tester si une valeur est de certain type >>> isinstance(True, bool) True Variables Type Python Pour tester si une valeur est de certain type >>> isinstance(True, bool) True Exemple 2 >>> isinstance(2.5, int) False Variables Type Python Pour tester si une valeur est de certain type >>> isinstance(True, bool) True Exemple 2 >>> isinstance(2.5, int) False Exemple 3 >>> isinstance(2, float) False Variables Type Python Le deuxième paramètre peut être un tuple >>> isinstance(2.5, (int, float)) True c Variables Type Python Le deuxième paramètre peut être un tuple >>> isinstance(2.5, (int, float)) True Exemple 2 c >>> isinstance("bonjour", (int, float)) False c Variables Identité Python Identité d’une variable Constante unique pour chaque variable (objet) Deux variables ayant la même identité = deux variables partageant la même valeur Variables Python Exemple >>> x = 2 >>> y = 2 >>> x,y (2, 2) >>> id(x), id(y) (1571223488, 1571223488) c Identité Variables Python Opérations sur les nombres = : affectation + : addition - : soustraction * : multiplication ** : puissance / : division // : division entière % : reste de la division Opérations sur les variables Variables Python Exemples >>> 7 >>> 10 >>> 2.5 >>> 2 >>> 25 >>> 1 5+2 5*2 5/2 5 // 2 5 ** 2 5%2 c Opérations sur les variables Variables Opérations sur les variables Python Quelques opérations sur les variables numériques i += 2 ⇒ i = i + 2 i -= 2 ⇒ i = i - 2 i *= 2 ⇒ i = i * 2 i /= 2 ⇒ i = i / 2 i %= 2 ⇒ i = i % 2 i //= 2 ⇒ i = i // 2 i **= 2 ⇒ i = i ** 2 ... Fichiers de code Python Python Quel IDE (Environnement de développement intégré) ? PyCharm (Pour télécharger : https://www.jetbrains.com/fr-fr/pycharm/download/#section=windows) Visual Studio Code (À ne pas confondre avec Visual Studio) Jupyter (https://jupyter.org/) ... Fichiers de code Python Python Démarche Créez un projet cours-python Dans cours-python, créez un fichier main.py Fichiers de code Python Python Démarche Créez un projet cours-python Dans cours-python, créez un fichier main.py Contenu de main.py msg = "Hello World" print(msg) Fichiers de code Python Python Démarche Créez un projet cours-python Dans cours-python, créez un fichier main.py Contenu de main.py msg = "Hello World" print(msg) Pour exécuter, cliquez sur le triangle vert (en haut à droite) Variables Opérations sur les variables Python Exercice Écrire un script Python qui permet de permuter le contenu de deux variables sans utiliser une troisième. Variables Python Première solution >>> a = 2 >>> b = 3 >>> a = a + b >>> b = a - b >>> a = a- b >>> a , b >>> (3,2) Opérations sur les variables Variables Opérations sur les variables Python Première solution >>> a = 2 >>> b = 3 >>> a = a + b >>> b = a - b >>> a = a- b >>> a , b >>> (3,2) Deuxième solution (on peut également entourer a,b par des () ou []) >>> >>> >>> >>> (3, a =2 b =3 a, b = b, a a, b 2) Variables Opérations sur les variables Considérons les deux chaı̂nes de caractères suivantes str1, str2 = ’bon’, "jour" Variables Opérations sur les variables Considérons les deux chaı̂nes de caractères suivantes str1, str2 = ’bon’, "jour" Utilisons l’opérateur + pour concaténer deux chaı̂nes de caractère >>> str3 = str1 + str2 >>> str3 ’bonjour’ c Variables Opérations sur les variables Considérons les deux chaı̂nes de caractères suivantes str1, str2 = ’bon’, "jour" Utilisons l’opérateur + pour concaténer deux chaı̂nes de caractère >>> str3 = str1 + str2 >>> str3 ’bonjour’ Utilisons l’opérateur * pour répéter un motif plusieurs fois >>> str3 * 4 ’bonjourbonjourbonjourbonjour’ c c Variables Opérations sur les variables Considérons les deux chaı̂nes de caractères suivantes str1, str2 = ’bon’, "jour" Utilisons l’opérateur + pour concaténer deux chaı̂nes de caractère >>> str3 = str1 + str2 >>> str3 ’bonjour’ c Utilisons l’opérateur * pour répéter un motif plusieurs fois >>> str3 * 4 ’bonjourbonjourbonjourbonjour’ c Multiplier une chaı̂ne de caractères par une deuxième chaı̂ne déclenche une erreur >>> str3 * "4" TypeError: can’t multiply sequence by non-int of type ’str’ Variables Opérations sur les variables Python Pour créer une chaı̂ne de caractères dont la valeur est définie sur plusieurs lignes >>> msg=’hello\ ... world’ >>> msg ’helloworld’ c Variables Opérations sur les variables Python Pour créer une chaı̂ne de caractères dont la valeur est définie sur plusieurs lignes >>> msg=’hello\ ... world’ >>> msg ’helloworld’ On peut également utiliser les """ c >>> msg2="""bonjour ... tout ... le ... monde""" >>> msg2 ’bonjour\ntout\nle\nmonde’ c Variables Opérations sur les variables Python Cette opération génère une erreur >>> 2 + ’3’ Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for +: ’int’ and ’str’ Variables Opérations sur les variables Python Cette opération génère une erreur >>> 2 + ’3’ Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for +: ’int’ and ’str’ Pour additionner un nombre et une chaı̂ne de caractère, on peut soit convertir la chaı̂ne en entier >>> 2 + int (’3’) 5 Variables Opérations sur les variables Python Cette opération génère une erreur >>> 2 + ’3’ Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for +: ’int’ and ’str’ c Pour additionner un nombre et une chaı̂ne de caractère, on peut soit convertir la chaı̂ne en entier >>> 2 + int(’3’) 5 Ou faire la concatenation >>> str(2) + ’3’ ’23’ Variables Opérations sur les variables Python Quelques fonctions de conversion en Python float() : convertit en réel la valeur passée en paramètre si elle est numérique, une erreur sera générée sinon. int() : convertit en entier la valeur passée en paramètre si elle est numérique, une erreur sera générée sinon. str() : convertir en chaı̂ne de caractère la valeur passée en paramètre bool(x) : retourne False si x contient le nombre 0, [], (), {} ou False, True sinon. ... Variables Suppression Python Pour supprimer une variable >>> del x c Variables Suppression Python Pour supprimer une variable >>> del x c Demander la valeur d’une variable supprimée génère une erreur >>> x Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name ’x’ is not defined c Lecture d’une saisie Python Pour lire une saisie de console (une chaı̂ne de caractère) >>> x = input() Lecture d’une saisie Python Pour lire une saisie de console (une chaı̂ne de caractère) >>> x = input() On peut ajouter un message indicatif >>> x = input(’Quel est votre nom ?\n’) Lecture d’une saisie Python Pour lire une saisie de console (une chaı̂ne de caractère) >>> x = input() On peut ajouter un message indicatif >>> x = input(’Quel est votre nom ?\n’) Pour lire une saisie numérique (entier par exemple) >>> num1 = int(input(’saisir un nombre’)) Formatage de chaı̂ne de caractère Python HI L E Écrire un script Python qui demande à l’utilisateur de saisir deux U O nombres et affiche le résultat de la somme comme suit : la somme M L de 2 et 3 est : 5 f E´ par l'utilisateur e r saisies h 2 et 3 etant des valeurs Ac Exercice Formatage de chaı̂ne de caractère Python Une première solution consiste à faire x = int(input(’Première valeur’)) y = int(input(’Deuxième valeur’)) resultat = x + y print(’la somme de’, x, ’et’, y, ’est :’, resultat) c Formatage de chaı̂ne de caractère Python Une première solution consiste à faire x = int(input(’Première valeur’)) y = int(input(’Deuxième valeur’)) resultat = x + y print(’la somme de’, x, ’et’, y, ’est :’, resultat) Remarque Python ajoute un espace après chaque paramètre de la fonction print(). Formatage de chaı̂ne de caractère Python Pour modifier le séparateur, on utilise l’option sep (ici c’est -) x = int(input(’Première valeur’)) y = int(input(’Deuxième valeur’)) resultat = x + y print(’la somme de’, x, ’et’, y, ’est :’, resultat, sep="-") Formatage de chaı̂ne de caractère Python Solution avec le formatage de la chaı̂ne de sortie en utilisant % comme en langage C x = int(input(’Première y = int(input(’Deuxième resultat = ’la somme de print(resultat % (x, y, valeur’)) valeur’)) %d et %d est : %d’ x + y)) Formatage de chaı̂ne de caractère Python Solution avec le formatage de la chaı̂ne de sortie en utilisant % comme en langage C x = int(input(’Première y = int(input(’Deuxième resultat = ’la somme de print(resultat % (x, y, c Autres options %s pour str %f pour float ... valeur’)) valeur’)) %d et %d est : %d’ x + y)) Formatage de chaı̂ne de caractère Python Solution avec le formatage de la chaı̂ne de sortie x = 5 y = 2 resultat = ’la somme de {} et {} est : {}’ print(resultat.format(x, y, x + y)) Formatage de chaı̂ne de caractère Python Solution avec le formatage de la chaı̂ne de sortie x = 5 y = 2 resultat = ’la somme de {} et {} est : {}’ print(resultat.format(x, y, x + y)) x = 5 y = 2 resultat = ’la somme de {1} et {0} est : {2}’ print(resultat.format(x, y, x + y)) Formatage de chaı̂ne de caractère Python Solution avec le formatage de la chaı̂ne de sortie x = 5 y = 2 resultat = ’la somme de {} et {} est : {}’ print(resultat.format(x, y, x + y)) x = 5 y = 2 resultat = ’la somme de {1} et {0} est : {2}’ print(resultat.format(x, y, x + y)) x = 5 y = 2 resultat = ’{} / {} est : {:.2f}’ print(resultat.format(x, y, x + y)) Formatage de chaı̂ne de caractère Python Un raccourci de l’écriture précédente (disponible depuis Python 3.6) x = int(input(’Première valeur’)) y = int(input(’Deuxième valeur’)) print(f’la somme de {x} et {y} est : {x + y}’) Commentaires Python Commentaire texte ignoré par le compilateur Commentaires Python Commentaire texte ignoré par le compilateur Syntaxe # le texte suivant sera ignoré Commentaires Python Commentaire de documentation (DocString) pouvant être récupéré pouvant être multi-lignes généralement attaché à un élément Python Commentaires Python Commentaire de documentation (DocString) pouvant être récupéré pouvant être multi-lignes généralement attaché à un élément Python Syntaxe """message sur plusieurs lignes attaché à un élément décrivant un élément Python""" Structures conditionnelles Python Structures conditionnelles if ... [[elif ...] else ...] Pas de switch ... case en Python Structures conditionnelles if Python Exécuter si une condition est vraie if (condition[s]): # instruction[s] c Structures conditionnelles if Python Exécuter si une condition est vraie if (condition[s]): # instruction[s] c Remarques Les parenthèses ne sont pas obligatoires L’indentation est obligatoire pour les instructions de if Pour les conditions, on utilise les opérateurs de comparaison Structures conditionnelles if Python Exemple x = 10 if (x > 0): print(str(x) + " est positif") c Structures conditionnelles if Python Exemple x = 10 if (x > 0): print(str(x) + " est positif") One-line if x = 10 if (x > 0): print(str(x) + " est positif") c Structures conditionnelles Python Opérateurs de comparaison == : pour tester l’égalité != : pour tester l’inégalité > : supérieur à < : inférieur à >= : supérieur ou égal à <= : inférieur ou égal à if Structures conditionnelles if ... else Python Exécuter un premier bloc si une condition est vraie, un deuxième sinon (le bloc else) if (condition[s]): # instruction[s] else: # instruction[s] Structures conditionnelles Exemple x = -10 if (x > 0): print(str(x) + " est positif") else: print(str(x) + " est négatif") if ... else Structures conditionnelles if ... else Exemple x = -10 if (x > 0): print(str(x) + " est positif") else: print(str(x) + " est négatif") One-line if else z = f"{x} est positif" if (x > 0) else f"{x} est négatif" print(z) Structures conditionnelles if ... else Exemple x = -10 if (x > 0): print(str(x) + " est positif") else: print(str(x) + " est négatif") One-line if else z = f"{x} est positif" if (x > 0) else f"{x} est négatif" print(z) Ou en plus simple z = f"{x} est" + (" positif" if (x>0) print(z) else " négatif") Structures conditionnelles if ... elif ... else Python On peut enchaı̂ner les conditions avec elif (et avoir un troisième bloc voire ... un nième) if (condition[s]): # instruction[s] elif (condition[s]): # instruction[s] ... else: # instruction[s] c Structures conditionnelles Exemple x = 0 if (x > 0): print(str(x) + " est positif") elif (x == 0): print(str(x) + " est nul") else: print(str(x) + " est négatif") if ... elif ... else Structures conditionnelles if ... elif ... else Exemple x = 0 if (x > 0): print(str(x) + " est positif") elif (x == 0): print(str(x) + " est nul") else: print(str(x) + " est négatif") One-line if elif else x=0 z = f"{x} est positif " if (x > 0) else f"{x} est null" if ( x==0 ) else f"{x}est negatif" print(z) Structures conditionnelles if ... elif ... else Exemple x x= =0 0 ifif(x(x> >0): 0): print(str(x) print(str(x)+ +" "est estpositif") positif") elif elif(x(x====0): 0): print(str(x) print(str(x)+ +" "est estnul") nul") else: else: print(str(x) print(str(x)+ +" "est estnégatif") négatif") One-line if elif else x=0 z = f"{x} est positif " if (x > 0) else f"{x} est null" if ( x==0 ) else f"{x}est negatif" print(z) One-line if elif else x=0 z = f"{x} est " +(" positif" if (x > 0) else " null" if (x==0) else " negatif") print(z) Structures conditionnelles Python Opérateurs logiques and : et or : ou not : non if ... elif ... else Structures conditionnelles if ... elif ... else Python Opérateurs logiques and : et or : ou not : non Tester plusieurs conditions (en utilisant des opérateurs logiques) if (condition1 and # instructions [else ...] condition2 or condition3): Structures conditionnelles if ... elif ... else Python Exercice Écrire un script Python qui demande à l’utilisateur de saisir deux valeurs numériques affiche le signe du résultat de la multiplication sans calculer le produit Structures conditionnelles pass Python Exemple de solution a = int(input("Entrer la premiere valeur : ")) b = int(input("Entrer la deuxieme valeur : ")) if (a > 0 or b < 0) and (a < 0 or b > 0): print(f"le resultat de la multiplication de {a}et{b} est positif") elif (a == 0 or b == 0): print(f"le resultat de la multiplication de {a}et{b} est null" else: print(f"le resultat de la multiplication de {a}et{b} est negatif") Structures conditionnelles pass Python Si, pour certains conditions, on n’a rien à faire, on peut utiliser pass x = 0 if (x > 0): print(str(x) + " est positif") elif (x == 0): pass else: print(str(x) + " est négatif") c Structures itératives Python Structures itératives while : pour un nombre d’itérations connu ou inconnus for : pour un nombre d’itérations connu Pas de do ... while en Python Structures itératives while Python Boucle while : à chaque itération on teste si la condition est vraie avant d’accéder aux traitements while condition[s] : # instruction[s] Structures itératives while Python Boucle while : à chaque itération on teste si la condition est vraie avant d’accéder aux traitements while condition[s] : # instruction[s] Attention aux boucles infinies, vérifier que la condition d’arrêt sera bien atteinte après un certain nombre d’itérations. Structures itératives while Python Exemple i = 0 while i < 5: print(i) i += 1 c Structures itératives while Python Exemple i = 0 while i < 5: print(i) i += 1 Le résultat est 0 1 2 3 4 c c Structures itératives while Python Pour tout afficher sur une seule ligne i = 0 while i < 5: i += 1 print(i, end=" ") Structures itératives while Python Pour tout afficher sur une seule ligne i = 0 while i < 5: end=" ") iprint(i, += 1 print(i, end=" ") i += 1 Le résultat est 1 2 3 4 5 c Structures itératives while ... break Python Exemple avec break i = 0 while i < 5: print(i) if i == 2: break i += 1 c Structures itératives while ... break Python Exemple avec break i = 0 while i < 5: print(i) if i == 2: break i += 1 Le résultat est 0 1 2 c Structures itératives while ... continue Python Exemple avec continue i = 0 while i < 5: i += 1 if i == 2: continue print(i) c Structures itératives while ... continue Python Exemple avec continue i = 0 while i < 5: i += 1 if i == 2: continue print(i) Le résultat est 1 3 4 5 c Structures itératives while ... else Python while ... else La clause else n’est exécutée que lorsque la condition de while devient fausse. Si on sort de la boucle ou si une exception est levée, le bloc else ne sera pas executée. Structures itératives while ... else Python Exemple avec while ... else i = 0 while i < 5: i += 1 print(i) else: print("i est égal à 5") c Structures itératives while ... else Python Exemple avec while ... else i = 0 while i < 5: i += 1 print(i) else: print("i est égal à 5") Le résultat est 1 2 3 4 5 i est égal à 5 c Structures itératives Python Boucle for for elt in iterable: # instruction[s] for Structures itératives for Python Boucle for for elt in iterable: # instruction[s] Une boucle for permet d’itérer sur les structures suivantes List Tuple Set Dictionary String Range Structures itératives for Python Pour parcourir une chaı̂ne de caractères chaine = "bonjour" for elt in chaine: print(elt) c Structures itératives for Python Pour parcourir une chaı̂ne de caractères chaine = "bonjour" for elt in chaine: print(elt) Le résultat est b o n j o u r c Structures itératives for Python Et si on a besoin d’afficher des valeurs (de 0 à 4 par exemple) sans avoir d’itérable, on utilise la fonction range for i in range(5): print(i) c Structures itératives for Python Et si on a besoin d’afficher des valeurs (de 0 à 4 par exemple) sans avoir d’itérable, on utilise la fonction range for i in range(5): print(i) Le résultat est 0 1 2 3 4 c Structures itératives for Python On peut aussi modifier la valeur initiale (par défaut 0) for i in range(2, 5): print(i) c Structures itératives for Python On peut aussi modifier la valeur initiale (par défaut 0) for i in range(2, 5): print(i) Le résultat est 2 3 4 c Structures itératives for Python Il est possible de modifier le pas (par défaut 1) for i in range(0, 6, 2): print(i) c Structures itératives for Python Il est possible de modifier le pas (par défaut 1) for i in range(0, 6, 2): print(i) Le résultat est 0 2 4 c Structures itératives for Python Comme pour while, il est possible d’utiliser pass continue break else Structures itératives for ... break ... else Python for ... break ... else Si le compilateur rencontre un break dans la boucle for, le else ne sera pas exécuté. S’il ne rencontre pas break dans la boucle for, la partie else sera executée. Collections (tableaux dynamiques) Les chaînes de caractères Python Les chaînes de caractères en Python sont immuable: une fois créées, on ne peut plus changer leurs contenu. Pour déclarer une chaîne de caractères x = str() x = str("welcome") y = str("""Hello world ! """) z = str(" welcome\ everyone") Variables Les chaînes de caractères Python Pour récupérer la taille d’une chaı̂ne de caractères >>> len(str3) 7 Variables Les chaînes de caractères Python Pour récupérer la taille d’une chaı̂ne de caractères >>> len(str3) 7 Pour remplacer une partie de la chaı̂ne par une autre >>> str3.replace(’jour’,’soir’) ’bonsoir’ Variables Les chaînes de caractères Python Pour récupérer la taille d’une chaı̂ne de caractères >>> len(str3) 7 Pour remplacer une partie de la chaı̂ne par une autre >>> str3.replace(’jour’,’soir’) ’bonsoir’ Pour découper une chaı̂ne de caractère selon un séparateur précisé >>> str3.split(’o’) [’b’, ’nj’, ’ur’] Variables Les chaînes de caractères Quelques méthodes sur les chaı̂nes de caractères capitalize() : convertit la première lettre du premier mot en majuscule title() : convertit la première lettre de chaque mot en majuscule index(x) : retourne l’indice de la première occurrence de x dans la chaı̂ne, erreur sinon. find(x) : retourne l’indice de la première occurrence de x dans la chaı̂ne, -1 sinon. contains() : retourne true si la chaı̂ne contient x, false sinon. upper() : convertit une chaı̂ne de caractères en majuscule lower() : convertit une chaı̂ne de caractères en minuscule strip() : supprime les espaces au début et à la fin startswith(x) : retourne true si la chaı̂ne commence par x, false sinon. endswith(x) : retourne true si la chaı̂ne se termine par x, false sinon. count(x) : retourne le nombre d’occurrence de x dans la chaı̂ne ... Variables Les chaînes de caractères Python Les méthodes isX() : retourne un booléen islower() : vérifie si tous les caractères d’une chaı̂nes sont en minuscule I ELH c isupper() : vérifie si tous les caractères d’une chaı̂nes sont en majuscule OU M L ères d’une chaı̂nes sont alphabétiques isalpha() : vérifie si tous lesE caract f rsietous les caractères d’une chaı̂nes sont numériques h isnumeric() : vc érifie c A isspace() : vérifie si tous les caractères d’une chaı̂nes sont des espaces isalnum() : vérifie si tous les caractères d’une chaı̂nes sont alphanumériques ... Variables Les chaînes de caractères Python Exercice Soit la chaine de caractères « Bienvenue dans la classe licda 2022 »: Stocker cette chaine dans une variable ch en utilisant la fonction str Afficher la taille de la chaine Afficher le premier et le dernier caractère de la chaine Afficher la sous-chaine « classe licda 2022 » à partir de ch Changer la sous-chaine "classe licda 2022" par "Classe LICDA 2023" ... Variables Les chaînes de caractères Python Exemple de solution ch = str("Bienvenue dans la classe licda 2022") print(f"la taille de [{ch}] = {len(ch)}") print(f"Le premier caractere de [{ch}] est : {ch[0]}") print(f"Le dernier caractere de [{ch}] est : {ch[len (ch)-1]}") print(f"Le dernier caractere de [{ch}] est : {ch[-1]}") print(ch[ch.index("classe"):]) print(ch[ch.find("classe"):]) ch = ch.replace("classe licda 2022", "Classe LICDA 2023") print(ch) Collections (tableaux dynamiques) Python Les collections en Python List : collection ordonnée (selon l’ordre d’insertion) acceptant valeurs dupliquées et types différents Tuple : collection ordonnée (selon l’ordre d’insertion) de constante acceptant valeurs dupliquées et types différents Set : collection non-ordonnée (selon l’ordre d’insertion) et non-indexée acceptant les types diff erents et n’autorisant pas les valeurs dupliquées Dictionary : collection non-ordonnée acceptant les valeurs dupliquées avec des clés personnalisées Collections (tableaux dynamiques) Python Pour déclarer une liste, on utilise les [] liste = [2, 3, 8, 5] List Collections (tableaux dynamiques) List Python Pour déclarer une liste, on utilise les [] liste = [2, 3, 8, 5] Pour accéder à un élément selon son indice (premier élément d’indice 0) print(liste[1]) # affiche 3 Collections (tableaux dynamiques) List Python Pour déclarer une liste, on utilise les [] liste = [2, 3, 8, 5] Pour accéder à un élément selon son indice (premier élément d’indice 0) print(liste[1]) # affiche 3 Pour accéder au dernier élément d’une liste c print(liste[-1]) # affiche 5 Collections (tableaux dynamiques) List Python Pour déclarer une liste, on utilise les [] liste = [2, 3, 8, 5] Pour accéder à un élément selon son indice (premier élément d’indice 0) print(liste[1]) # affiche 3 Pour accéder au dernier élément d’une liste c print(liste[-1]) # affiche 5 Pour accéder à un élément selon son indice en commençant par la fin print(liste[-2]) # affiche 8 Collections (tableaux dynamiques) List Python Accéder à un élément via un indice inexistant génère une erreur print(liste[10]) Traceback (most recent call last): File "c:/Users/elmou/Desktop/cours-python/main.py" , line 2, in <module>print (liste[10]) IndexError: list index out of range c Collections (tableaux dynamiques) List Python Accéder à un élément via un indice inexistant génère une erreur print(liste[10]) Traceback (most recent call last): File "c:/Users/elmou/Desktop/cours-python/main.py" , line 2, in <module>print (liste[10]) IndexError: list index out of range c Pour determiner la taille d’une liste print(len(liste)) # affiche 4 Collections (tableaux dynamiques) List Python Pour tester si un élément est dans la liste if 3 in liste: print(’oui’) # affiche oui c Pour faire l'inverse if 3 not in liste: print(’oui’) # affiche oui c Collections (tableaux dynamiques) List Python Les listes supportent les deux opérateurs « + » et « * » L’opérateur « + » sert à concaténer deux listes : liste1 = [55, 20] liste2 =[1, 2, 3, 50, 12] res = liste1 + liste2 print(res) # [55, 20, 1, 2, 3, 50, 12] L’opérateur « * » sert à dupliquer une liste : liste1 = [55, 20] res = liste1 * 2 print(res) # [55, 20, 55, 20] Collections (tableaux dynamiques) List Python Il est possible d’additionner (ou fusionner) les listes liste += [1, 6] print(liste) # affiche [2, 3, 8, 5, 1, 6] Collections (tableaux dynamiques) List Python Il est possible d’additionner (ou fusionner) les listes liste += [1, 6] print(liste) # affiche [2, 3, 8, 5, 1, 6] Ou liste = [*liste, 1, 6] print(liste) # affiche [2, 3, 8, 5, 1, 6] Collections (tableaux dynamiques) List Python Il est possible d’additionner (ou fusionner) les listes liste += [1, 6] print(liste) # affiche [2, 3, 8, 5, 1, 6] Ou liste = [*liste, 1, 6] print(liste) # affiche [2, 3, 8, 5, 1, 6] Sans l’opérateur *, le résultat est différent liste = [liste, 1, 6] print(liste) # affiche [[2, 3, 8, 5], 1, 6] Collections (tableaux dynamiques) List Python Pour ajouter un nouvel élément à la liste (à la fin) liste.append(9) print(liste) # affiche [2, 3, 8, 5, 1, 6, 9] c Collections (tableaux dynamiques) List Python Pour ajouter un nouvel élément à la liste (à la fin) liste.append(9) print(liste) # affiche [2, 3, 8, 5, 1, 6, 9] c Pour ajouter un nouvel élément à la liste à un emplacement précis c liste.insert(2, 6) print(liste) # affiche [2, 3, 6, 8, 5, 1, 6, 9] Collections (tableaux dynamiques) List Python Pour supprimer le dernier élément de la liste, on utilise pop liste.pop() print(liste) # affiche [2, 3, 6, 8, 5, 1, 6 ] Collections (tableaux dynamiques) List Python Pour supprimer le dernier élément de la liste, on utilise pop liste.pop() print(liste) # affiche [2, 3, 6, 8, 5, 1, 6 ] c Pour supprimer un élément de la liste selon la valeur, on utilise remove. Si l’élément n’existe pas, une exception sera levée. liste.remove(8) print(liste) # affiche [2, 3, 6, 5, 1, 6 ] Collections (tableaux dynamiques) List Python Pour supprimer un élément de la liste selon l’indice. Si l’indice est supérieur à la taille de la liste, une exception sera levée. liste.pop(1) print(liste) # affiche [2, 6, 5, 1, 6 ] c Collections (tableaux dynamiques) List Python Pour supprimer un élément de la liste selon l’indice. Si l’indice est supérieur à la taille de la liste, une exception sera levée. liste.pop(1) print(liste) # affiche [2, 6, 5, 1, 6 ] Ou aussi del liste[1] print(liste) # affiche [2, 5, 1, 6 ] c Collections (tableaux dynamiques) List Python Pour parcourir une liste for elt in liste: print(elt) c Collections (tableaux dynamiques) List Python Pour parcourir une liste for elt in liste: print(elt) Le résultat est 2 3 8 5 c c Collections (tableaux dynamiques) List Python Pour afficher les éléments et leurs indices for ind in range(len(liste)): print(ind, liste[ind]) c Collections (tableaux dynamiques) List Python Pour afficher les éléments et leurs indices for ind in range(len(liste)): print(ind, liste[ind]) Le résultat est 0 1 2 3 2 3 8 5 c c Collections (tableaux dynamiques) List Python On peut aussi utiliser enumerate for ind, elt in enumerate(liste): print(ind, elt) c Collections (tableaux dynamiques) List Python On peut aussi utiliser enumerate for ind, elt in enumerate(liste): print(ind, elt) Le résultat est 0 1 2 3 2 3 8 5 c c Collections (tableaux dynamiques) List Python Pour modifier la valeur initiale de l’indice, on utilise start for ind, elt in enumerate(liste, start=1): print(ind, elt) c Collections (tableaux dynamiques) List Python Pour modifier la valeur initiale de l’indice, on utilise start for ind, elt in enumerate(liste, start=1): print(ind, elt) Le résultat est 1 2 3 4 2 3 8 5 c c Collections (tableaux dynamiques) List Python Autres méthodes sur les listes clear() : supprime tous les éléments de la liste. count(x) : compte le nombre de x dans la liste. index(x) : retourne l’indice de la première occurrence de x dans la liste, une exception sera levée si x n’est pas dans la liste. sort() : trie la liste. reverse() : inverse l’ordre des éléments de la liste. ... Collections (tableaux dynamiques) List Python Exemple avec index(value, start, stop) liste2 = [2, 3, 8, 5, 0, 3, 1, 3] print(liste2.index(3)) # affiche 1 print(liste2.index(3, 2)) # affiche 5 print(liste2.index(3, -1)) # affiche 7 print(liste2.index(3, 0, 5)) # affiche 1 Collections (tableaux dynamiques) List Python Exercice 1 : Étant donnée la liste suivante ma_liste = [2, 7, 2, 1, 3, 9, 2, 4, 2] Écrire un programme Python qui permet de supprimer la deuxième occurrence du chiffre 2 de la liste Collections (tableaux dynamiques) List Python Exercice 1 : Étant donnée la liste suivante ma_liste = [2, 7, 2, 1, 3, 9, 2, 4, 2] Écrire un programme Python qui permet de supprimer la deuxième occurrence du chiffre 2 de la liste Le résultat attendu [2, 7, 1, 3, 9, 2, 4, 2] Collections (tableaux dynamiques) List Python La solution ma_liste = [2, 7, 2, 1, 3, 9, 2, 4, 2] ma_liste.pop(ma_liste.index(2, ma_liste.index(2) + 1)) print(ma_liste) Collections (tableaux dynamiques) List Python Il est possible de décomposer les valeurs d’une liste et les stocker dans des variables a, b, c, d = liste print(a, b, c, d) # affiche 2 5 1 6 c Collections (tableaux dynamiques) List Python Il est possible de décomposer les valeurs d’une liste et les stocker dans des variables a, b, c, d = liste print(a, b, c, d) # affiche 2 5 1 6 c Les valeurs d’une liste peuvent être construites à partir de plusieurs variables a, b, c, d = 2, 3, 8, 5 liste = [a, b, c, d] print(liste) # affiche [2, 3, 8, 5] List Indexation des listes Python Pour extraire les éléments de la position 2 jusqu’à la fin print(liste[2:]) # affiche [5, 1, 6] List Indexation des listes Python Pour extraire les éléments de la position 2 jusqu’à la fin print(liste[2:]) # affiche [5, 1, 6] Pour extraire les éléments du début jusqu’à la position 4 print(liste[:4]) # affiche [2, 6, 5, 1] List Indexation des listes Python Pour extraire les éléments de la position 2 jusqu’à la fin print(liste[2:]) # affiche [5, 1, 6] Pour extraire les éléments du début jusqu’à la position 4 print(liste[:4]) # affiche [2, 6, 5, 1] Pour extraire les caractères entre la position 2 et 4 en commençant de la fin print(liste[-4:-2]) # affiche[6,5] Collections (tableaux dynamiques) Tuple Python Pour déclarer un tuple, on utilise les () marques = ("peugeot", "ford", "toyota") Collections (tableaux dynamiques) Tuple Python Pour déclarer un tuple, on utilise les () marques = ("peugeot", "ford", "toyota") Pour accéder à un élément selon son indice (premier element d’indice 0) print(marques[1]) # affiche ford Collections (tableaux dynamiques) Tuple Python Pour déclarer un tuple, on utilise les () marques = ("peugeot", "ford", "toyota") Pour accéder à un élément selon son indice (premier élément d’indice 0) print(marques[1]) # affiche ford Pour accéder au dernier élément d’une liste print(marques[-1]) # affiche toyota Collections (tableaux dynamiques) Tuple Python Accéder à un élément via un indice inexistant génère une erreur print(marques[10]) Traceback (most recent call last): File "c:/Users/elmou/Desktop/cours-python/main.py" , line 2, in <module> print(marques[10]) IndexError: tuple index out of range c Collections (tableaux dynamiques) Tuple Python Accéder à un élément via un indice inexistant génère une erreur print(marques[10]) Traceback (most recent call last): File "c:/Users/elmou/Desktop/cours-python/main.py" , line 2, in <module> print(marques[10]) IndexError: tuple index out of range c Pour déterminer la taille d’un tuple print(len(marques)) # affiche 3 Collections (tableaux dynamiques) Tuple Python Modifier un élément d’un tuple génère une erreur marques[1] = "fiat" Traceback (most recent call last): File "c:/Users/elmou/Desktop/cours-python/main.py" , line 2, in <module> marques[1] = "fiat" TypeError: ’tuple’ object does not support item assignment c Collections (tableaux dynamiques) Tuple Python Modifier un élément d’un tuple génère une erreur marques[1] = "fiat" Traceback (most recent call last): File "c:/Users/elmou/Desktop/cours-python/main.py" , line 2, in <module> marques[1] = "fiat" TypeError: ’tuple’ object does not support item assignment Remarques Il est impossible d’ajouter ou supprimer un élément d’un tuple count(x) et index(x) sont applicables sur les tuples Collections (tableaux dynamiques) Tuple Python Pour parcourir un tuple for elt in marques: print(elt) c Collections (tableaux dynamiques) Tuple Python Pour parcourir un tuple for elt in marques: print(elt) Le résultat est peugeot ford toyota c c Collections (tableaux dynamiques) List Python Les Set Les Set en python sont un type de collections de données non ordonnée, modifiable et non indexée. Les éléments définis dans les Set ne sont pas modifiables, mais il est possible d'ajouter de nouveaux éléments ou de les supprimer Collections (tableaux dynamiques) Set Python Pour déclarer un set, on utilise les {} ensemble = {2, 3, 8, 5} Impossible d’accéder à un élément d’un ensemble via son indice (un ensemble n’est pas ordonné et est donc non indexé) print(ensemble[1]) Traceback (most recent call last): File "c:/Users/elmou/Desktop/cours-python/main.py", line 2, in < module> print(ensemble[1]) TypeError: ’set’ object is not subscriptable Collections (tableaux dynamiques) Python Pour déterminer la taille d’un set print(len(ensemble)) # affiche 4 Set Collections (tableaux dynamiques) Set Python Pour déterminer la taille d’un set print(len(ensemble)) # affiche 4 Pour ajouter un nouvel élément à l’ensemble ensemble.add(6) print(ensemble) # affiche {2, 3, 5, 6, 8} Collections (tableaux dynamiques) Set Python Pour déterminer la taille d’un set print(len(ensemble)) # affiche 4 Pour ajouter un nouvel élément à l’ensemble ensemble.add(6) print(ensemble) # affiche {2, 3, 5, 6, 8} Pour ajouter plusieurs éléments simultanément ensemble.update([6, 1]) print(ensemble) # affiche {1, 2, 3, 5, 6, 8} Collections (tableaux dynamiques) Set Python Pour déterminer la taille d’un set print(len(ensemble)) # affiche 4 Pour ajouter un nouvel élément à l’ensemble ensemble.add(6) print(ensemble) # affiche {2, 3, 5, 6, 8} Pour ajouter plusieurs éléments simultanément ensemble.update([6, 1]) print(ensemble) # affiche {1, 2, 3, 5, 6, 8} Pour supprimer un élément ensemble.remove(3) print(ensemble) # affiche {1, 2, 5, 6, 8} Collections (tableaux dynamiques) Set Python Si l’élément à supprimer n’existe pas, remove déclenche une erreur ensemble.remove(9) Traceback (most recent call last): File "c:/Users/elmou/Desktop/cours-python/main.py", line 2, in < module> ensemble.remove(9) KeyError: 9 Collections (tableaux dynamiques) Set Python Si l’élément à supprimer n’existe pas, remove déclenche une erreur ensemble.remove(9) Traceback (most recent call last): File "c:/Users/elmou/Desktop/cours-python/main.py", line 2, in < module> ensemble.remove(9) KeyError: 9 On peut utiliser discard pour supprimer (ne déclenche pas d’erreur si l’élément n’existe pas) ensemble.discard(9) print(ensemble) # affiche {1, 2, 5, 6, 8} c Collections (tableaux dynamiques) Set Python Si l’élément à supprimer n’existe pas, remove déclenche une erreur ensemble.remove(9) Traceback (most recent call last): File "c:/Users/elmou/Desktop/cours-python/main.py", line 2, in < module> ensemble.remove(9) KeyError: 9 On peut utiliser discard pour supprimer (ne déclenche pas d’erreur si l’élément n’existe pas) ensemble.discard(9) print(ensemble) # affiche {1, 2, 5, 6, 8} c Pour supprimer le dernier élément, on peut utiliser pop (Attention a` l’ordre) ensemble.pop() print(ensemble) # affiche {1, 2, 5, 6 } Collections (tableaux dynamiques) Set Python ensemble = {2,3,8,5} Pour parcourir un set for elt in ensemble: print(elt) c Collections (tableaux dynamiques) Set Python ensemble = {2,3,8,5} Pour parcourir un set for elt in ensemble: print(elt) Le résultat est 2 3 8 5 c c Collections (tableaux dynamiques) Set Autres méthodes sur les ensembles clear() : supprime tous les éléments de la liste union() : retourne la fusion de deux ensembles difference() : retourne un ensemble contenant les éléments différents de deux ensembles ou plus intersection() : retourne les éléments en commun entre deux ensembles issubset() : retourne True si un ensemble est contenu dans un autre, False sinon. isdisjoint() : retourne True si deux ensembles ont au moins un élément en commun, False sinon. ... Collections (tableaux dynamiques) Dictionary Python Pour déclarer un dictionnaire (key: value), on utilise les {} fcb = { "pomme": 10, "poire": 9, "banane": 4, "kiwi": 23 } Collections (tableaux dynamiques) Dictionary Python Pour déclarer un dictionnaire (key: value), on utilise les {} fcb = { "pomme": 10, "poire": 9, "banane": 4, "kiwi": 23 } Pour accéder à une valeur selon la clé print(fcb.get(’pomme’)) # affiche 10 c Collections (tableaux dynamiques) Dictionary Python Pour déclarer un dictionnaire (key: value), on utilise les {} fcb = { "pomme": 10, "poire": 9, "banane": 4, "kiwi": 23 } Pour accéder à une valeur selon la clé print(fcb.get(’pomme’)) # affiche 10 Ou aussi print(fcb[’pomme’]) # affiche 10 Collections (tableaux dynamiques) Dictionary Python Pour extraire la liste de valeurs d’un dictionnaire print(fcb.values()) # affiche dict_values([10, 9, 4, 23]) Collections (tableaux dynamiques) Dictionary Python Pour extraire la liste de valeurs d’un dictionnaire print(fcb.values()) # affiche dict_values([10, 9, 4, 23]) Pour extraire la liste de clés d’un dictionnaire print(fcb.keys()) # affiche dict_keys([’pomme’, ’poire’, ’banane’, ’kiwi’]) Collections (tableaux dynamiques) Dictionary Python Pour extraire la liste de valeurs d’un dictionnaire print(fcb.values()) # affiche dict_values([10, 9, 4, 23]) Pour extraire la liste de clés d’un dictionnaire print(fcb.keys()) # affiche dict_keys([’pomme’, ’poire’, ’banane’, ’kiwi’]) Pour connaı̂tre le nombre d’items d’un dictionnaire print(len(fcb)) # affiche 4 Collections (tableaux dynamiques) Dictionary Python Pour ajouter un nouvel item au dictionnaire fcb[’ananas’] = 8 print(fcb) # affiche {’pomme’: 10, ’poire’: 9, ’banane’: 4, ’kiwi’: 23, ’ananas’: ’8’} Collections (tableaux dynamiques) Dictionary Python Pour ajouter un nouvel item au dictionnaire fcb[’ananas’] = 8 print(fcb) # affiche {’pomme’: 10, ’poire’: 9, ’banane’: 4, ’kiwi’: 23, ’ananas’: ’8’} Si la clé existe, la valeur associée sera modifiée fcb[’pomme’] = 11 print(fcb) # affiche {’pomme’:10, ’poire’:9, ’banane’:4, ’kiwi’:23, ’ananas’:’8’} Collections (tableaux dynamiques) Dictionary Python Pour ajouter un nouvel item au dictionnaire fcb[’ananas’] = 8 print(fcb) # affiche {’pomme’: 10, ’poire’: 9, ’banane’: 4, ’kiwi’: 23, ’ananas’: ’8’} Si la clé existe, la valeur associée sera modifiée fcb[’pomme’] = 11 print(fcb) # affiche {’pomme’:10, ’poire’:9, ’banane’:4, ’kiwi’:23, ’ananas’:’8’} On peut utiliser la méthode update pour ajouter plusieurs items ou modifier des items existants fcb.update({’pomme’:11, 'ananas': 8}) print(fcb) # affiche {’pomme’: 10, ’poire’: 9, ’banane’: 4, ’kiwi’: 23, ’ananas’: ’8’} Collections (tableaux dynamiques) Dictionary Python Pour supprimer un item selon la clé fcb.pop(’pomme’) print(fcb) # affiche {’poire’:9, ’banane’:4, ’kiwi’:23, ’ananas’:’8’} Collections (tableaux dynamiques) Dictionary Python ´ Pour supprimer un item selon la clé fcb.pop(’pomme’) print(fcb) # affiche {’poire’:9, ’banane’:4, ’kiwi’:23, ’ananas’:’8’} Ou aussi del fcb[’pomme’] print(fcb) # affiche {’poire’:9, ’banane’:4, ’kiwi’:23, ’ananas’:’8’} Collections (tableaux dynamiques) Dictionary Python Pour supprimer un item selon la clé fcb.pop(’pomme’) print(fcb) # affiche {’poire’:9, ’banane’:4, ’kiwi’:23, ’ananas’:’8’} Ou aussi del fcb[’pomme’] print(fcb) # affiche {’poire’:9, ’banane’:4, ’kiwi’:23, ’ananas’:’8’} Pour supprimer le dernier item inséré fcb.popitem() print(fcb) # affiche {’pomme’:10, ’poire’:9,’banane’:4, ’kiwi’:23 } Collections (tableaux dynamiques) Dictionary Python Pour parcourir un dictionnaire for key in fcb: print(key + ’ ’ + str(fcb[key])) c Collections (tableaux dynamiques) Dictionary Python Pour parcourir un dictionnaire for key in fcb: print(key + ’ ’ + str(fcb[key])) Le résultat est pomme 10 poire 9 banane 4 kiwi 23 c c Collections (tableaux dynamiques) Dictionary Python Ou aussi for key, value in fcb.items(): print(key + ’ ’ + str(value)) c Collections (tableaux dynamiques) Dictionary Python Ou aussi for key, value in fcb.items(): print(key + ’ ’ + str(value)) Le résultat est le même pomme 10 poire 9 banane 4 kiwi 23 c Collections (tableaux dynamiques) Dictionary Python Autres méthodes sur les dictionnaires clear() : supprime tous les items d’un dictionnaire copy() : copie un dictionnaire ... Collections (tableaux dynamiques) Dictionary Python Exercice : Étant donnée la liste suivante : liste = [2, 5, "Bonjour", True, ’c’, "3", "b", False , 10] Écrire un programme Python qui permet de stocker dans un dictionnaire (compteur) les types contenus dans la liste liste ainsi que le nombre d’éléments de cette liste appartenant à chaque type. Résultat attendu : {’int’: 3, ’str’: 4, ’bool’: 2} Collections (tableaux dynamiques) Dictionary Python Une première solution liste = [2, 5, "Bonjour", True, ’c’, "3", "b", False, 10] compteur = {} for e in liste: if (type(e).__name__ in compteur): compteur[type(e).__name__] += 1 else: compteur[type(e).__name__] = 1 print(compteur) # affiche {’int’: 3, ’str’: 4, ’bool’: 2} Collections (tableaux dynamiques) Dictionary Python Une deuxième solution liste = [2, 5, "Bonjour", True, ’c’, "3", "b", False, 10] compteur = {} for elt in liste: type = elt.__class__.__name__ if type in compteur.keys(): compteur.update({type: compteur[type] + 1}) else: compteur.update({type: 1}) print(compteur) # affiche {’int’: 3, ’str’: 4, ’bool’: 2} Variable (objet) muable (mutable) Python En Python Toute variable est un objet (instance d’une classe) Deux types d’objet Mutable (ou muable) : peut être modifié après sa création (en préservant la même identité) Immutable (ou immuable) : ne peut être modifié après sa création (peut être réaffecté) Variable (objet) muable (mutable) Python En Python Toute variable est un objet (instance d’une classe) Deux types d’objet Mutable (ou muable) : peut être modifié après sa création (en préservant la même identité) Immutable (ou immuable) : ne peut être modifié après sa création (peut être réaffecté) Ne pas confondre modification et affectation Variable (objet) muable (mutable) Python Exemple d’objets mutables list dict set classes personnalisées Variable (objet) muable (mutable) Python Exemple d’objets mutables list dict set classes personnalisées Exemple liste = [2, 3, 8, 5] print(id(liste)) # affiche 20373256 liste[2] = 4 print(id(liste)) # affiche 20373256 Variable (objet) muable (mutable) Python Exemple d’objets immuables int et float str bool tuple Variable (objet) muable (mutable) Python Exemple d’objets immuables int et float str bool tuple Exemple ch = "bonjour" print(id(ch)) affiche 9417152 ch = "bonsoir" print(id(ch)) affiche 9417216 Variable (objet) muable (mutable) Python Un objet immuable peut être réaffecté mais ne peut être modifié ch = "bonjour" print(ch) # affiche bonjour ch[3] = "t" # affiche TypeError: ’str’ object does not support item assignment Variable (objet) muable (mutable) Python Objet muable vs objet immuable Objets immuables : accès plus rapide et modification coûteuse (création d’une nouvelle copie) Objets muables : modification moins coûteuse et accès moins rapide Variable (objet) muable (mutable) Python Un tuple est un objet immuable, donc il ne peut être modifié tpl = ([2, 3], [8, 5]) tpl[0] = 1 # affiche TypeError: ’tuple’ object does not support item assignment Variable (objet) muable (mutable) Python Un tuple est un objet immuable, donc il ne peut être modifié tpl = ([2, 3], [8, 5]) tpl[0] = 1 # affiche TypeError: ’tuple’ object does not support item assignment Si un élément d’un tuple est muable, alors il est possible de le modifier c tpl = ([2, 3], [8, 5]) tpl[0][1] = 1 print(tpl) # affiche ([2, 1], [8, 5])