3 - Boucles for et Séquences (range, listes, chaînes de caractères) 3.1 - La bo

3 - Boucles for et Séquences (range, listes, chaînes de caractères) 3.1 - La boucle for Remarque : les programmes TP2_while et TP2_turtle du TP précédent auraient pu (dû) être écrits avec une boucle for, car le nombre d'itérations était connu. A partir de maintenant, nous utiliserons : - une boucle while si le nombre d'itérations n'est pas connu à l'avance ; - une boucle for si le nombre d'itérations est connu à l'avance. Rappel : range(p,n,pas) représente la suite des entiers de p inclus à n exclu, avec un pas. On peut l'utiliser dans une boucle ou bien encore le convertir en liste. Exercice 1 : Afficher des étoiles (programme TP3_1) a) écrire un programme TP3_1.py qui permette de faire saisir un entier nbEtoiles par l'utilisa­ teur et affiche nbEtoiles étoiles sur une même ligne en utilisant une boucle for, sans espace entre chaque étoile (le nombre d'étoiles sera représenté obligatoirement par la variable nbEtoiles). Il est interdit dans cet exercice d'utiliser la répétition de chaîne de caractère "*" * n. Indication : comme dans le programme TP2_while, utilisez l'option end= de la fonction print() pour que les étoiles s'écrivent sur une même ligne et non pas sur des lignes différentes. Exemple d'exécution (la saisie est en gras) : combien d'étoiles ? 7 ******* b) modifier ce programme pour qu'il vérifie que le nombre d'étoiles est strictement positif et demande à l'utilisateur de le ressaisir en cas d'erreur. Exemple d'exécution (les saisies sont en gras) : Combien d'étoiles ? -2 Erreur, veuillez saisir un nombre strictement positif. Combien d'étoiles ? 4 **** c) modifier votre programme pour qu'il permette de saisir un entier nbLignes strictement positif (contrôler cette saisie), et qu'il affiche nbLignes lignes de nbEtoiles étoiles en utilisant un second niveau de boucle for (note : les noms des variables sont obligatoires). info - TP3 page 26 Exercices et programmes à rendre dans le compte-rendu de TP : ex 1 (TP3_1), ex 2 (TP3_2), ex 3 (TP3_3), ex 5 (TP3_5), ex 6 (TP3_6), ex 7 (TP3_7) Ne pas rendre dans le compte rendu de TP : tableaux 1, 2, 3, 4, ex 4 (TP3_4) Exemple d'exécution (les saisies sont en gras) : Combien d'étoiles ? 6 Combien de lignes ? 3 ****** ****** ****** Exercice 2 : s omme d'entiers de 1 à n (programme TP3_2) On veut calculer la somme des entiers de 1 à n, sans utiliser la formule n(n+ 1) 2 , mais à l'aide d'une boucle for. a) Dans un premier temps, écrire une boucle for pour calculer la somme des entiers de 1 à 10. La somme sera stockée dans une variable nommée somme. Afficher cette somme à l'écran en fin de programme. Exemple d'exécution : La somme des entiers de 1 à 10 est 55. b) Modifiez votre programme pour obliger l'utilisateur à saisir un nombre n strictement positif (vous pouvez copier-coller un morceau de votre programme TP3_1.py), puis calculez la somme des entiers de 1 à n, et affichez-la à l'écran en fin de programme. Exercice 3 : multiples de 7 (programme TP3_3) a) Écrire un programme qui affiche les 20 premiers multiples de 7 strictement positifs, séparés par un point-virgule sur une même ligne, mais en allant à la ligne après chaque multiple de 3. b) Modifier ce programme pour qu'il : - fasse saisir par l'utilisateur un nombre n et un nombre p strictement positifs ; - affiche sur une même ligne les n premiers multiples de 7, séparés par un point virgule sur une même ligne, mais en allant à la ligne après chaque multiple de p. c) Modifier ce programme pour que, en plus, il compte les multiples de p qui auront été affichés, et affiche ce nombre à la fin. Exemple d'exécution : Combien de multiples de 7 voulez vous afficher ? 20 Vous irez à la ligne après chaque multiple de ... (nbre stricte­ ment positif svp) : 3 7;14;21 28;35;42 49;56;63 70;77;84 91;98;105 112;119;126 133;140; Vous avez affiché 6 multiples de 3 3.2 - Les listes 3.2.1 - Fonctions utiles pour travailler avec des listes Les opérateurs, fonctions et méthodes les plus utiles pour les listes sont : len(lst), lst.append(), lst.remove(), lst.pop(), elem in lst, lst.sort() info - TP3 page 27 Soit lst une liste quelconque, soit elem un élément : len(lst) renvoie le nombre d'éléments dans lst. lst.append(elem) ajoute l’élément elem à la fin de la liste lst. lst.remove(elem) supprime de la liste lst, la première occurence de l’élément elem (si la liste lst contient plusieurs fois l'élément elem, seul le premier est enlevé). lst.pop() supprime le dernier élément de la liste lst. lst.pop(i) supprime l'élément d'indice i de la liste lst. elem in lst renvoie True si elem est un élément de la liste lst, sinon renvoie False. lst.index(elem) renvoie l'indice de l’élément elem dans la liste lst. lst.sort() modifie la liste lst en la triant par ordre croissant. sorted(lst) crée une copie de la liste lst, triée par ordre croissant (la liste lst n'est pas modifiée par cette instruction ; seule sa copie est triée). En tapant help(list) dans l'interpréteur python, on obtient toutes ces fonctions ainsi que beau­ coup d'autres. Nous allons maintenant apprendre à manipuler les listes. Saisissez dans l'interpréteur python : Tableau 1 : manipuler les listes instruction à saisir résultat obtenu + commentaire ou explication maListe=[22,"coucou",33,"z", 'a','b',111,99] maListe len(maListe) 'z' in maListe maListe[3]=1024 'z' in maListe maListe maListe.append(33) maListe.append("hello") maListe maListe.remove(33) 33 in maListe maListe maListe.pop() info - TP3 page 28 maListe.pop(1) maListe maListe.index('a') maListe.index(111) maListe.sort() maListe.remove('a') maListe.remove('b') maListe maListe.sort() maListe uneListe=['z','a','d','aa'] uneListe.sort() uneListe On peut extraire une sous-liste d'une liste en indiquant entre crochets les indices des éléments que l'on veut extraire : Extraction de sous-listes : Soit lst une liste quelconque. lst[p] renvoie l'élément d'indice p de lst. lst[p:n] renvoie une nouvelle liste constituée des éléments de lst d'indice p inclus à n exclu. lst[p:n:pas] renvoie une nouvelle liste constituée des éléments de lst d'indice p inclus à n exclu, tous les pas. lst[:] renvoie une nouvelle liste constituée de tous les éléments de lst. lst[p:] renvoie une nouvelle liste constituée de tous les éléments de lst à partir de l'élément d'indice p inclus. lst[:n] renvoie une nouvelle liste constituée de tous les éléments de lst depuis le premier jusqu'à l'élément d'indice n exclu. lst[::pas] renvoie une nouvelle liste constituée des éléments de lst, tous les pas. Tableau 2 : extraire une sous-liste d'une liste instruction à taper résultat obtenu + commentaire ou explication maListe maListe[0:3] info - TP3 page 29 maListe[0:4:2] maListe[0:3] maListe[:] maListe[::2] maListe[::-1] maListe[0] maListe[1] maListe[4] maListe[5] maListe[-1] maListe[-2] maListe[-5] maListe[-6] maListe[:3] maListe[2:] maListe[-1]="b" maListe L'affectation en Python est l'association entre un nom de variable et une valeur. Lorsqu'on affecte une variable à une autre variable, on crée simplement un autre nom qui partage la même valeur en mémoire - on peut tester qu'il s'agit effectivement de la même valeur avec l'opérateur is qui compare l'identité de deux valeurs. Essayez les instructions suivantes : Tableau 3 : identité des valeurs instruction à taper résultat obtenu + commentaire ou explication a = 14000 2 b = a b b == a b is a c = 14000 2 On utilise une valeur entière élevée pour éviter un cas particulier d'optimisation réalisé pour les valeurs de -4 à 256, on aurait aussi pu utiliser une valeur flottante. info - TP3 page 30 c == a c is a Cela ne pose pas de problème avec les types int, float, bool et str car les valeurs elle-mêmes ne sont pas modifiables3 (pour changer la valeur associée à la variable il faut réaliser une nouvelle affectation). De la même façon, l'affectation d'une variable à une autre variable d'une valeur de type list, ne crée pas une nouvelle liste qui soit une copie de la première, mais met simplement en place un nouveau nom qui référence la même liste en mémoire. Or il est possible de modifier directement cette valeur liste4 en utilisant les opérateurs et méthodes vus précédemment. Si deux variables réfé­ rencent la même liste, les modifications réalisées en utilisant une variable seront visibles aussi avec l'autre variable. Pour créer une copie d'une liste en étant sûr que les modifications ne toucheront pas l'originale, il faut utiliser un des moyens présentés ci-après. Tapez dans l'interpréteur python : Tableau 4 : copier une liste instruction à taper résultat obtenu + commentaire ou explication maListe liste2 = maListe liste2 is maListe liste2[1]="nouveau" liste2 maListe 1ère méthode de copie : grâce à un transtypage. liste3 = list(maListe) liste3 is maListe liste3[4]="surprise" liste3 maListe 2ème méthode de copie : grâce à une extraction de tous les éléments de maListe. liste4 = maListe[:] liste4 is maListe liste4[0]=8 liste4 3 En Python en dit que ces types int, float, bool, str sont "immutables". 4 En Python on dit que le type list est "mutable". info - TP3 page 31 maListe 3ème méthode de copie : avec le module copy import copy liste5 = copy.deepcopy(maListe) liste5 is maListe La troisième méthode a uploads/s3/ tppython.pdf

  • 46
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager