theme 5
TRANSCRIPT
1
THEME 5 LES TYPES DE DONNÉES
2011-02-17
2
@3
@5
@8
@7
Employee1
verre3
B2B_Server_Name
EntrepriseName
Verre2
@2 Verre3
Checked
@1
@4
VARIABLES EN MÉMOIRE (RAPPEL)
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
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'>
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
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
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).
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.
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
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
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
12
EXERCICE 5.1
Écrivez un script qui détermine si une chaine contient ou non le caractère ≪ e ≫.
13
EXERCICE 5.2
Écrivez un script qui compte le nombre d’occurrences du caractère ≪ e ≫ dans une chaine.
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 ≫
15
EXERCICE 5.4
Écrivez un script qui recopie une chaine (dans une nouvelle variable) en l’inversant.
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
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
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)
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)
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)
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)
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...].
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 …
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.
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.