theme 5

25
THEME 5 LES TYPES DE DONNÉES 2011-02-17 1

Upload: salmazen

Post on 09-Jun-2015

617 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Theme 5

1

THEME 5 LES TYPES DE DONNÉES

2011-02-17

Page 2: Theme 5

2

@3

@5

@8

@7

Employee1

verre3

B2B_Server_Name

EntrepriseName

Verre2

@2 Verre3

Checked

@1

@4

VARIABLES EN MÉMOIRE (RAPPEL)

Page 3: Theme 5

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

Page 4: Theme 5

4

LE TYPE INTEGER Exemple de la suite de Fibonacci avec des entiers

a,b=0,1

print a,":",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'>

Page 5: Theme 5

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

Codage binaire Codage décimal

00000000 00000000 00000000 00010010

18

Page 6: Theme 5

6

LE TYPE FLOAT Exemple de la suite de Fibonacci avec des réels (nombres à

virgules flottantes)

a,b=0. ,1.

print a,":",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

Page 7: Theme 5

7

LE TYPE FLOAT EN MÉMOIRE Plage des valeurs (positives ou négatives)

• Entre 10-308 et 10308

• Précision de 12 chiffres significatifs

• Encodés d'une manière particulière sur 8 octets (64

bits)

• Une partie du code correspond aux 12 chiffres significatifs

• L’autre à l'ordre de grandeur (exposant de 10).

Page 8: Theme 5

8

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.

Page 9: Theme 5

9

LE CARACTÈRE SPÉCIAL « \ » (ANTISLASH)

txt3 = '"N\'est-ce pas ?" répondit-elle.'print(txt3)

"N'est-ce pas ?" répondit-elle.

txt1 = ' Cette chaine contient un saut de ligne. \n Affichez la pour le voir! ‘

Cette chaine contient un saut de ligne. Affichez la pour le voir!

txt3= ' Je contiens deux \'apostrophes\' ‘

Je contiens deux 'apostrophes'

testTab= ' Entre toi\tet\t moi il y a deux tabulations ‘

Entre toi et moi il y a deux tabulations

Page 10: Theme 5

10

OPÉRATIONS SUR LES CHAÎNES (1/2)

Accès aux éléments de la chaîne

ch = "Christine" print ch[0], ch[2], ch[5]

C r t

Concaténation a = 'Petit poisson' b = ' deviendra grand' c = a + b

print c Petit poisson deviendra grand

Page 11: Theme 5

11

OPÉRATIONS SUR LES CHAÎNES (2/2)

Longueur d’une chaîne

print len(c) 29

Conversion d’un nombre en chaîne ch = '8647'.

print ch + 45

cannot concatenate 'str' and 'int' objects

n = int(ch)

print n + 658712 # OK : on peut additionner 2 nombres

Page 12: Theme 5

12

EXERCICE 5.1

Écrivez un script qui détermine si une chaine contient ou non le caractère ≪ e ≫.

Page 13: Theme 5

13

EXERCICE 5.2

Écrivez un script qui compte le nombre d’occurrences du caractère ≪ e ≫ dans une chaine.

Page 14: Theme 5

14

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 ≫

Page 15: Theme 5

15

EXERCICE 5.4

Écrivez un script qui recopie une chaine (dans une nouvelle variable) en l’inversant.

Page 16: Theme 5

16

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

Page 17: Theme 5

17

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

Page 18: Theme 5

18

Il est possible de changer les éléments individuels d’une liste

jour[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']

OPÉRATIONS SUR LES LISTES (2/5)

Page 19: Theme 5

19

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)

Page 20: Theme 5

20

Longeur de la liste

len(liste) comme pour les chaînes, s’applique aussi aux listes.

print(len(jour))7

Suppression d’un élémentdel(jour[4])print(len(jour))6

OPÉRATIONS SUR LES LISTES (4/5)

Page 21: Theme 5

21

['lundi', 'mardi', 'mercredi', 'Juillet', 'jeudi', 'vendredi']

Ajout d’un élément à la liste

jour.append('samedi')print(jour)print(len(jour))

['lundi', 'mardi', 'mercredi', 'Juillet', 'jeudi', 'vendredi', 'samedi']7

OPÉRATIONS SUR LES LISTES (5/5)

Page 22: Theme 5

22

EXERCICE 5.5Soient 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...].

Page 23: Theme 5

23

EXERCICE 5.6

Ecrivez un 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 …

Page 24: Theme 5

24

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 comportantmoins de 6 caractères, L’autre les mots comportant 6 caractères ou

davantage.

Page 25: Theme 5

25

EXERCICE 5.8

Ecrivez un 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.