3. Principaux types de données Un type: Un espace en mémoire Une adresse Une taille En python: défini de manière dynamique Une plage de valeurs permises Les types Les données numériques: integer , float Les données alphanumériques: Le type string Les listes 3
4. Le type integer Exemple de la suite de Fibonacci avec des entiers a,b=0,1 printa,":",type(b) print b,":",type(b) for i in range(11): c=b b=a+b a=c print b,":", type(b) 0 : <type 'int'> 1 : <type 'int'> 1 : <type 'int'> 2 : <type 'int'> 3 : <type 'int'> 5 : <type 'int'> 8 : <type 'int'> 13 : <type 'int'> 21 : <type 'int'> 34 : <type 'int'> 55 : <type 'int'> 89 : <type 'int'> 144 : <type 'int'> 4
5. Le type integer en mémoire Encodé sous la forme d'un bloc de 4 octets (ou 32 bits) Exemple: 2^30* 0 + 2^29 * 0 + 2^28 * 0 +………………….. + 2^4 * 1 + 2^3 * 0+ 2^2 * 0+ 2^1 * 1+ 2^0 * 0 = 18 Max: 1er bit (bit de signe) + tous les autres bits à 1 = 2147483647 Plage des valeurs dans [– 2147483648 ; 2147483647] Remarque: pour plus de valeurs: type Long 1 Octet = 8 bits 5
6. Le type float Exemple de la suite de Fibonacci avec des réels (nombres à virgules flottantes) a,b=0. ,1. printa,":",type(b) print b,":",type(b) for i in range(11): c=b b=a+b a=c print b," :", type(b) 0.0 : <type 'float'> 1.0 : <type 'float'> 1.0 : <type 'float'> 2.0 : <type 'float'> 3.0 : <type 'float'> 5.0 : <type 'float'> 8.0 : <type 'float'> 13.0 : <type 'float'> 21.0 : <type 'float'> 34.0 : <type 'float'> 55.0 : <type 'float'> 89.0 : <type 'float'> 144.0 : <type 'float'> Exemples de floats 3.14 ; 10.; .001; 1e100; 3.14e-10 6
12. Le type string phrase1 = 'les oeufs durs.' phrase2 = ' "Oui", répondit-il,' phrase3 = "j'aime bien" print(phrase2, phrase3, phrase1) "Oui", répondit-il, j'aime bien les oeufs durs. 8
13. Le caractère spécial « » (antislash) txt3 = '"Napos;est-ce pas ?" répondit-elle.' print(txt3) "N'est-ce pas ?" répondit-elle. txt1 = ' Cette chaine contient un saut de ligne. Affichez la pour le voir! ‘ Cette chaine contient un saut de ligne. Affichez la pour le voir! txt3= ' Je contiens deux apos;apostrophesapos; ‘ Je contiens deux 'apostrophes' testTab= ' Entre toiet moi il y a deux tabulations‘ Entre toi et moi il y a deux tabulations 9
14. Opérations sur les chaînes (1/2) Accès aux éléments de la chaîne ch= "Christine" printch[0], ch[2], ch[5] C r t Concaténation a = 'Petit poisson' b = ' deviendra grand' c = a + b printc Petit poisson deviendra grand 10
15. Opérations sur les chaînes (2/2) Longueur d’une chaîne printlen(c) 29 Conversion d’un nombre en chaîne ch= '8647'. printch + 45 cannot concatenate 'str' and 'int' objects n = int(ch) printn + 658712 # OK : on peut additionner 2 nombres 11
16. Exercice 5.1 Écrivez un script qui détermine si une chaine contient ou non le caractère ≪ e ≫. 12
17. Exercice 5.2 Écrivez un script qui compte le nombre d’occurrences du caractère ≪ e ≫ dans une chaine. 13
18. Exercice 5.3 Écrivez un script qui recopie une chaine (dans une nouvelle variable), en insérant des astérisques entre les caractères. Ainsi par exemple, ≪ gaston ≫ devra devenir ≪ g*a*s*t*o*n ≫ 14
19. Exercice 5.4 Écrivez un script qui recopie une chaine (dans une nouvelle variable) en l’inversant. 15
20. Les listes Définition d’une liste jour = ['lundi', 'mardi', 'mercredi', 1800, 20.357, 'jeudi', 'vendredi']print(jour)['lundi', 'mardi', 'mercredi', 1800, 20.357, 'jeudi', 'vendredi'] La valeur de la variable jour est une liste 16
21. Opérations sur les listes (1/5) Affichage des éléments de la liste print(jour[0])print(jour[2])print(jour[4])lundimercredi20.357 17
22. Opérations sur les listes (2/5) Il est possible de changer les éléments individuels d’une listejour[3] = jour[3] + 47print(jour)['lundi', 'mardi', 'mercredi', 1847, 20.357, 'jeudi', 'vendredi'] jour[3] = 'Juillet'print(jour) ['lundi', 'mardi', 'mercredi', 'juillet', 20.357, 'jeudi', 'vendredi'] 18
23. On peut remplacer certains éléments d’une liste par d’autres.jour[3] = 'Juillet'print(jour)['lundi', 'mardi', 'mercredi', 'Juillet', 20.357, 'jeudi', 'vendredi'] Opérations sur les listes (3/5) 19
24. Longeur de la liste len(liste) comme pour les chaînes, s’applique aussi aux listes.print(len(jour))7 Suppression d’un élément del(jour[4]) print(len(jour))6 Opérations sur les listes (4/5) 20
25. Opérations sur les listes (5/5) ['lundi', 'mardi', 'mercredi', 'Juillet', 'jeudi', 'vendredi'] Ajout d’un élément à la listejour.append('samedi')print(jour)print(len(jour))['lundi', 'mardi', 'mercredi', 'Juillet', 'jeudi', 'vendredi', 'samedi']7 21
26. Exercice 5.5 Soient les listes suivantes : t1 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] t2 = ['Janvier', 'Fevrier', 'Mars', 'Avril', 'Mai', 'Juin‘,'Juillet', 'Aout', 'Septembre', 'Octobre', 'Novembre', 'Decembre'] Ecrivez un petit programme qui crée une nouvelle liste t3. Celle-ci devra contenir tous les elements des deux listes en les alternant, de telle maniere que chaque nom de mois soit suivi du nombre de jours correspondant : ['Janvier',31,'Fevrier',28,'Mars',31, etc...]. 22
27. Exercice 5.6 Ecrivezun programme qui affiche ≪ proprement ≫ tous les éléments d’une liste. Si on l’appliquait par exemple a la liste t2 de l’exercice ci-dessus, on devrait obtenir : Janvier Fevrier Mars Avril Mai Juin Juillet Aout Septembre … 23
28. Exercice 5.7 Écrivez un programme qui analyse un par un tous les éléments d’une liste de mots (par exemple : ['Jean', 'Maximilien', 'Brigitte', 'Sonia', 'Jean-Pierre‘,'Sandra']) pour générer deux nouvelles listes. L’une contiendra les mots comportant moins de 6 caractères, L’autre les mots comportant 6 caractères ou davantage. 24
29. Exercice 5.8 Ecrivezun programme qui analyse un par un tous les elements d’une liste de nombres (par exemple t3) pour generer deux nouvelles listes. L’une contiendra seulement les nombres pairs de la liste initiale, et l’autre les nombres impairs. Par exemple, si la liste initiale est celle de l’exercice precedent, le programme devra construire une liste pairs qui contiendra [32, 12, 8, 2], et une liste impairs qui contiendra [5, 3, 75, 15]. Astuce : pensez a utiliser l’operateur modulo (%) deja cite precedemment. 25