Professional Documents
Culture Documents
Sous Python
Apprendre programmer :
1. activit intressante qui contribue dvelopper votre intelligence.
2. procure une grande satisfaction : pouvoir raliser des projets concrets.
Machine, Langage et Programmation
Dans son fonctionnement interne, un ordinateur est totalement
incapable de traiter autre chose que des nombres binaires.
00110011001100110011000011111100001111.
Alors que nous raisonnons en base 10 (grce nos 10 doigts)
Imaginez quun ordinateur ne sache compter quavec une paire de doigts
C'est une longue suite de 1 et de 0 (les "bits") souvent traits par groupes
de 8 (les octets ), 16, 32, ou mme 64.
Pourquoi ?
Il s'agit d'un langage de haut niveau
Python
JAVA
Remarque
2. Les langages formels sont des langages dvelopps par nous mme, en vue
d'applications spcifiques.
, etc.
Lorsque vous lisez une phrase quelconque, vous devez arriver vous
reprsenter la structure logique de la phrase (mme si vous le faites
inconsciemment la plupart du temps).
Par exemple, lorsque vous lisez la phrase la pice est tombe , vous
comprenez que la pice en est le sujet et est tombe le verbe.
L'analyse vous permet de comprendre la signification et la logique de la
phrase (sa smantique).
D'une manire analogue, l'interprteur Python devra analyser la
structure de votre programme source pour en extraire la signification.
Les trois caractres >>> constituent le signal d'invite, ou prompt principal, lequel
vous indique que Python est prt excuter une commande.
Calculer avec Python en mode interactif
>>> 5+3
>>> 2 - 9 # les espaces sont optionnels
>>> 7 + 3 * 4 # la hirarchie des oprations mathmatiques
# est-elle respecte ?
>>> (7+3)*4
>>> 20 / 3
Mmoire
@
Taille 1110000000011
Une variable apparat dans un langage de
@ 1110001110011 programmation sous un nom de variable,
Prix_Unitaire 1110001110000 mais pour l'ordinateur il s'agit d'une rfrence
@
Quantit 0000001110011 dsignant une adresse mmoire, c'est--dire
0000000000011 un emplacement prcis dans la mmoire vive.
.
.
.
3. Pour pouvoir accder aux donnes, le programme d'ordinateur (quel que
soit le langage dans lequel il est crit) fait abondamment usage d'un
grand nombre de variables de diffrents types.
Noms de variables et mots rservs
Les noms de variables sont des noms quon choisit assez librement
De prfrence assez courts, mais aussi explicites que possible, pour
exprimer clairement ce que la variable est cense contenir :
altitude, altit ou alt (au lieu de x ) pour exprimer une altitude
prix_unit pour exprimer un prix unitaire, etc.
Quelques rgles pour les noms de variables sous Python :
1. Un nom de variable est une squence de lettres (a z , A Z) et de chiffres (0 9), qui doit
toujours commencer par une lettre.
2. Seules les lettres ordinaires sont autorises. Les lettres accentues, les cdilles, les espaces,
les caractres spciaux tels que $, #, @, etc. sont interdits, l'exception du caractre _
(soulign).
En plus de ces rgles, il faut encore ajouter que vous ne pouvez pas utiliser
comme noms de variables les 29 mots rservs au langage ci-dessous :
>>> msg = "Quoi de neuf ?" # affecter la valeur "Quoi de neuf ?" msg
>>> n
7
>>> msg
"Quoi de neuf ? " #affiche les guillemets, donc le type.
>>> pi
3.14159
Exemple :
>>> x = y = 7
>>> x
7
>>> y
7
On peut aussi effectuer des affectations parallles l'aide d'un seul oprateur :
>>> a, b = 4, 8.33
>>> a
4
>>> b
8.33
Dans cet exemple, les variables a et b prennent simultanment les nouvelles valeurs
4 et 8,33.
Exercices
>>> largeur = 20
>>> hauteur = 5 * 9.3
>>> largeur * hauteur
930
Exemple :
a, b = 7.3, 12
y = 3*a + b/5
Exercice
Ce que vous placez la gauche du signe gale dans une expression doit toujours tre une
variable, et non une expression : le signe gale n'a pas la mme signification qu'en
mathmatique, il s'agit d'un symbole d'affectation
m + 1 = b est incorrect.
Par contre, a = a + 1 est inacceptable en math,
mais correct en programmation
Structures de contrle
if
circonstance1 circonstance2
fin dexcution
Slection ou excution conditionnelle
Cest une technique permettant d'aiguiller le droulement du programme dans
diffrentes directions, en fonction des circonstances rencontres.
Disposer d'instructions capables de tester une certaine condition et de modifier le
comportement du programme en consquence.
L'instruction if.
>>> a = 150
>>> if (a > 100):
... "a dpasse la centaine"
...
Indentation obligatoire
En interactif :
Frappez encore une fois <Enter>. Le programme s'excute, et vous obtenez :
a dpasse la centaine.
Recommencez le mme exercice, mais avec a = 20 en guise de premire ligne : cette fois Python
n'affiche plus rien du tout.
Slection ou excution conditionnelle
>>> a = 20
>>> if (a > 100):
... "a dpasse la centaine"
... else:
... "a ne dpasse pas cent"
...
En interactif :
Frappez <Enter> encore une fois. Le programme s'excute, et affiche cette fois :
a ne dpasse pas cent.
a=0
if a > 0 :
" a est positif "
elif a < 0 :
"a est ngatif"
else:
"a est nul"
Oprateurs de comparaison
La condition value aprs l'instruction if peut contenir les oprateurs de
comparaison suivants :
x == y # x est gal y (deux signes gale et non d'un seul)
x != y # x est diffrent de y
x>y # x est plus grand que y
x<y # x est plus petit que y
x >= y # x est plus grand que, ou gal y
x <= y # x est plus petit que, ou gal y
Exemple :
>>> a = 7
>>> if (a % 2 == 0):
... "a est pair"
... "parce que le reste de sa division par 2 est nul"
... else:
... "a est impair"
...
Exemple :
Ligne d'en-tte:
premire instruction du bloc
... ...
... ...
dernire instruction du bloc
S'il y a plusieurs instructions indentes sous la ligne d'en-tte, elles doivent l'tre
exactement au mme niveau (comptez un dcalage de 4 caractres, par exemple).
Ces instructions indentes constituent ce que nous appellerons dsormais un bloc
d'instructions.
Instructions imbriques
Il est parfaitement possible d'imbriquer les unes dans les autres plusieurs
instructions composes, de manire raliser des structures de dcision
complexes.
Exemple :
if embranchement == "vertbrs": # 1
if classe == "mammifres": # 2
if ordre == "carnivores": # 3
if famille == "flins": # 4
"c'est peut-tre un chat" # 5
"c'est en tous cas un mammifre" # 6
elif classe == 'oiseaux': # 7
"c'est peut-tre un canari" # 8
"la classification des animaux est complexe" # 9
Ce programme n'imprime la phrase c'est peut-tre un chat que dans le cas o les quatres premires
conditions testes sont vraies.
Pour que la phrase c'est peut-tre un canari soit affiche, il faut que la variable embranchement contienne
vertbrs , et que la variable classe contienne oiseaux .
Quelques rgles de syntaxe Python
Les limites des instructions et des blocs sont dfinies par la mise en page
Avec Python, vous devez utiliser les sauts la ligne et l'indentation. Python vous force donc crire du code
lisible, et prendre de bonnes habitudes que vous conserverez lorsque vous utiliserez d'autres langages.
>>> a = 5
>>> b = a # a et b contiennent des valeurs gales
>>> b = 2 # a et b sont maintenant diffrentes
Instructions rptitives
Exercice
Rappelons ici que Python permet d'affecter leurs valeurs plusieurs variables simultanment :
>>> a, b, c, d = 3, 4, 5, 7
Supposons par exemple que nous voulions maintenant changer les valeurs
des variables a et c. (Actuellement, a contient la valeur 3, et c la valeur 5.
Nous voudrions que ce soit l'inverse). Comment faire ?
4.1. crivez les lignes d'instructions ncessaires pour obtenir ce rsultat sous
python.
Rptitions en boucle - l'instruction while
L'une des tches que les machines font le mieux est la rptition sans erreur de tches identiques !
3. Que se passe-t-il ?
Rptitions en boucle - l'instruction while
>>> a = 0
>>> while (a < 7): # (n'oubliez pas le double point !)
... a = a + 1 # (n'oubliez pas l'indentation !)
...a
Commentaires
1. Dans notre exemple, si la condition a < 7 est encore vraie, le corps de la boucle est excut une
nouvelle fois et le bouclage se poursuit.
2. La variable value dans la condition doit exister au pralable (Il faut qu'on lui ait dj affect au moins une valeur)
3. Si la condition est fausse au dpart, le corps de la boucle n'est jamais excut
4. Si la condition reste toujours vraie, alors le corps de la boucle est rpt indfiniment.
Linconvnient dune programmation interactive : toutes les squences d'instructions crites disparaissent
irrmdiablement ds que vous fermez l'interprteur.
La sauvegarde de vos programmes dans des fichiers donne la possibilit de les retravailler par tapes
successives, de les transfrer sur d'autres machines, etc..
(Votre programme : Rdaction de vos squences d'instructions dans un diteur de textes, par exemple XEmacs, o il vous est
trs fortement recommand d'expliciter vos scripts le mieux possible, en y incorporant de nombreux commentaires.
Pour que ce script s'excute, il suffira d'entrer la commande suivante dans une fentre
de terminal :
python MonScript
Exercices
1. Ecrivez un programme qui calcule le volume d'un paralllpipde rectangle dont sont
fournis au dpart la largeur, la hauteur et la profondeur.
1. Donnes numriques
entiers (int ou long)
Modifions donc lgrement l'exercice, de manire afficher aussi le
type de la variable principale :
Fibonacci
>>> a, b, c = 1, 1, 1
>>> while c < 49:
print c, " : ", b, type(b)
a, b, c = b, a+b, c+1
...
...
... (affichage des 43 premiers termes)
...
44 : 1134903170 <type 'int'>
45 : 1836311903 <type 'int'>
46 : 2971215073 <type 'long'>
47 : 4807526976 <type 'long'>
48 : 7778742049 <type 'long'>
Principaux types de donnes
1. Donnes numriques:
rels ou virgules flottantes (float)
Par exemple, les donnes :
3.14 10. .001 1e100 3.14e-10
Essayons ce type de donnes dans un nouveau petit programme
(inspir du prcdent) :
Factoriel
Le type float permet de manipuler des nombres (>0 ou <0) compris entre 10^-308 et
10^308 avec une prcision de 12 chiffres significatifs. Ils sont encods d'une manire
particulire sur 8 octets (64 bits) dans la mmoire : une partie correspond aux 12
chiffres significatifs, et une autre l'ordre de grandeur (exposant de 10).
Principaux types de donnes
2. Les donnes alphanumriques
Le type string (chane de caractres)
Un programme d'ordinateur peut galement traiter des caractres alphabtiques,
des mots, des phrases, ou des suites de symboles quelconques.
Une donne de type string est une suite quelconque de caractres dlimite soit
par des apostrophes (simple quotes), soit par des guillemets (double quotes).
Exemple:
>>> phrase1 = 'les oeufs durs.'
>>> phrase2 = '"Oui", rpondit-il,'
>>> phrase3 = "j'aime bien"
>>> print phrase2, phrase3, phrase1
"Oui", rpondit-il, j'aime bien les oeufs durs.
Les 3 variables phrase1, phrase2, phrase3 sont donc des variables de type string
Remarques :
La squence \n dans une chane provoque un saut la ligne.
La squence \' permet d'insrer une apostrophe dans une chane dlimite par
des apostrophes
Accs aux caractres individuels d'une chane
Chanes de caractres <=> Donnes composites
Dans le cas d'une chane de caractres, ses entits plus
simples sont videmment les caractres eux-mmes.
Exemple :
>>> ch = "Stphanie"
>>> print ch[0], ch[3]
Sp
Oprations lmentaires sur les chanes
De nombreuses fonctions intgres Python, permettent d'effectuer divers
traitements sur les chanes de caractres.
concatnation
a = 'Petit poisson'
b = ' deviendra grand'
c=a+b
print c
petit poisson deviendra grand
len()
>>> print len(c)
29
Conversion en nombre dune chane de caractres qui reprsente un nombre
>>> ch = '8647'
>>> print ch + 45
==> *** erreur *** on ne peut pas additionner une chane et un nombre
>>> n = int(ch)
>>> print n + 65
8712 # OK : on peut additionner 2 nombres
Exercices
1. crivez un script qui dtermine si une chane contient ou non le caractre
e.
3. crivez un script qui recopie une chane dans une nouvelle variable, en
insrant des astrisques entre les caractres.
Ainsi par exemple, gaston devra devenir g*a*s*t*o*n
4. crivez un script qui recopie une chane (dans une nouvelle variable) en
l'inversant. Ainsi par exemple, zorglub deviendra bulgroz .
Exemple :
>>> jour = ['lundi', 'mardi', 'mercredi', 1800, 20.357, 'jeudi','vendredi']
>>> print jour
['lundi', 'mardi', 'mercredi', 1800, 20.357, 'jeudi', 'vendredi']
Comme les chanes de caractres, les listes sont des squences, c'est--
dire des collections ordonnes d'objets. On peut accder chacun d'entre
eux individuellement si l'on connat son index dans la liste
Exemple :
>>> jour = ['lundi', 'mardi', 'mercredi', 1800, 20.357, 'jeudi', 'vendredi']
>>> print jour[2]
mercredi
>>> print jour[4]
20.357
Les listes Fonctions intgres
On peut donc remplacer certains lments d'une liste par d'autres, comme ci-
dessous :
>>> del(jour[4])
>>> print jour
['lundi', 'mardi', 'mercredi', 'juillet',
'jeudi', 'vendredi']
Les listes
Fonctions intgres
Il est galement tout fait possible d'ajouter un lment une liste, mais pour ce
faire, il faut considrer que la liste est un objet
>>> jour.append('samedi')
>>> print jour
['lundi', 'mardi', 'mercredi', 'juillet', 'jeudi', 'vendredi', 'samedi']
>>>
jour = ['dimanche','lundi','mardi','mercredi','jeudi','vendredi','samedi']
a, b = 0, 0
while a<25:
a=a+1
b=a%7
print a, jour[b]
Exercices
1. Soient les listes suivantes :
t1 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
t2 = ['Janvier', 'Fvrier', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Aot', 'Septembre', 'Octobre', 'Novembre',
'Dcembre']
crivez un petit programme qui cre une nouvelle liste t3. Celle-ci devra contenir tous les lments des
deux listes en les alternant, de telle manire que chaque nom de mois soit
suivi du nombre de jours correspondant : ['Janvier',31,'Fvrier',28,'Mars',31, etc...].
2. crivez un programme qui affiche proprement tous les lments d'une liste. Si on l'appliquait par
exemple la liste t2 de l'exercice ci-dessus, on devrait obtenir : Janvier Fvrier Mars Avril Mai Juin Juillet
Aot Septembre Octobre Novembre Dcembre
3. crivez un programme qui recherche le plus grand lment prsent dans une liste donne.
Par exemple, si on l'appliquait la liste [32, 5, 12, 8, 3, 75, 2, 15], ce programme devrait afficher :
le plus grand lment de cette liste a la valeur 75.
4. crivez un programme qui analyse un par un tous les lments d'une liste de nombres (par exemple celle
de l'exercice prcdent) pour gnrer 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
prcdent, 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 utiliser l'oprateur modulo (%) dj cit prcdemment.
5. crivez un programme qui analyse un par un tous les lments d'une liste de mots (par exemple : ['Jean',
'Maximilien', 'Brigitte', 'Sonia', 'Jean-Pierre', 'Sandra'] pour gnrer deux nouvelles listes. L'une contiendra
les mots comportant moins de 6 caractres, l'autre les mots comportant 6 caractres ou davantage.
Fonctions prdfinies
Les fonctions permettent de dcomposer un programme complexe en une srie de
sous-programmes plus simples, lesquels peuvent leur tour tre dcomposs eux-
mmes en fragments plus petits, et ainsi de suite
ou encore :
prenom = input('Entrez votre prnom (entre guillemets) : )
print 'Bonjour,', prenom
Fonctions prdfinies
Remarques importantes
Exemple de fonctionnement :
Pour utiliser la fonction que nous venons de dfinir, il suffit de l'appeler par
son nom. Ainsi :
>>> table7()
Provoque l'affichage de :
7 14 21 28 35 42 49 56 63 70
Pourquoi dfinir une fonction ?
def cube(n):
return n**3
def volumeSphere(r):
return 4 * 3.1416 * cube(r) / 3
r = input('Entrez la valeur du rayon : ')
print 'Le volume de cette sphre vaut', volumeSphere(r)