Cours Python
Cours Python
Cours Python
L’histoire
Il permet de créer toutes sortes de programme, comme des scripts, des jeux,
des logiciels, des progiciels…
Installer Python
Quelque soit votre système d’exploitation, vous devez vous rendre sur le site
officiel de Python (python.org).
Une variable est une donnée de votre programme, stockée dans votre
ordinateur. C’est un code alpha-numérique que vous allez lier à une donnée de
votre programme, afin de pouvoir l’utiliser à plusieurs reprises et faire des
calculs. En Python, pour donner une valeur à une variable , il suffit d’écrire
nom_de_la_variable=valeur , on appelle cette étape l’affectation de valeur à
une variable.
Le type entier se nomme int en Python. La forme d’un entier est un nombre
sans virgule.
Les flottants sont les nombres à virgule. Ils se nomment float en Python.
La syntaxe d’un nombre flottant est celle d’un nombre à virgule (n’oubliez pas
de remplacer la virgule par un point).
Ce type de donnée permet de stocker une série de lettres. On peut écrire une
chaine de caractère entre guillemets.
La plupart des fonctions ont besoin d’au moins un paramètre pour travailler sur
une donnée ; ces paramètres sont des informations que vous passez à la
fonction afin qu’elle travaille dessus.
Nom_de_la_fonction (parapetre_1,parapmetre_2,…,parapetre_n)
La fonction type()
type ( nom_de_la_variable)
La fonction print()
Exemple :
a=3
print (a)
a=a+3
b=a-2
Le premier appel à print affiche 3 , le second appel à print affiche : a=6 et 6=4
La fonction input ( )
input ( ) est une fonction qui va, pour nous, caractériser nos premières
interactions avec utilisateur : le programme réagira différemment en fonction
du nombre saisi par l’utilisateur.
Exemple :
y= int (x)
a=5
b=8
if a > 0 :
b += 1
print (a,b)
Une telle instruction est composée d’abord du mot clé if et d’une condition
puis du symbole « : » suivi d’une instruction ou d’un bloc de code en retrait.
Cette dernière instruction n’est exécutée que si la condition s’avère être vraie.
La seconde notion importante est celle de tabulations. Les tabulations sont
essentielles pour Python. Il ne s’agit pas , comme dans d’autres langages tels
que C++ OU LE Java , d’un confort de lecture mais bien d’un moyen pour
l’interpréteur où se trouve le début ou la fin d’un bloc.
Forme complète ( if,elif et else)
L’instruction else :
Le mot-clé else permet de définir une première forme de complément à notre
instruction if.
Age=21
if age >= 18 :
print (" vous êtes majeur. ")
else :
print (" vous êtes mineur. ")
Python exécute soit l’un soit l’autre et jamais les deux.
L’instruction elif :
Le mot clé elif est une contraction else if que l’on peut traduire très
littéralement par sinon si.
if a > 0 :
print (" a est positif. ")
elif a < 0 :
print (" a est négatif. ")
else :
print (" a est nul. ")
De nouveaux opérateurs
Les opérateurs de comparaison
Les conditions doivent nécessairement introduire de nouveaux opérateurs, dits
opérateurs de comparaison.
Booléens
True et False sont les deux valeurs possibles d’un type que nous n’avons pas vu
jusqu’ici : le type booléen.
Age=21
majeur = False
if age >= 18 :
majeur = True
A la fin de cet exemple , majeur vaut True , si ;l’age est supérieur ou égal à 18.
Sinon il continue de valoir False.
Les mots-clés and, or et not
Pour tester si une variable se trouve dans un intervalle on peut écrire :
a=5
if a >= 2 :
if a <= 8 :
print (" a est dans l’intervalle. ")
else :
print (" a n’est pas dans l’intervalle. ")
else :
print (" a n’est pas dans l’intervalle. ")
Il existe cependant le mot clé and qui peut nous réduire les conditions
imbriquées :
if a >= 2 and a<= 8 :
print (" a est dans l’intervalle. ")
else :
print (" a n’est pas dans l’intervalle. ")
Sur le même mode , il existe le mot clé or :
if a < 2 or a > 8 :
print (" a n’est pas dans l’intervalle. ")
else :
print (" a est dans l’intervalle. ")
Enfin il existe le mot clé not qui inverse un prédicat. Le prédicat not a==5
équivaut donc à a !=5.
Exercices :
1) Faire un programme qui détermine si une année saisie par l’utilisateur
est bissextile.
2) Ecrire un programme qui demande trois entiers à l’utilisateur et affiche
ces trois entiers dans l’ordre croissant.
3) Ecrire un programme pour résoudre une équation du second degré.
4) a) Ecrire un programme qui demande à l’utilisateur de saisir deux lettres
et qui affiche la lettre majoritaire ( ou X si aucune n’est majoritaire)
b) Même question avec trois lettres.
Chapitre 3 LES BOUCLES
Les boucles constituent un moyen de répéter un certain nombre de fois des
instructions de votre programme.
La boucle for
L’instruction for travaille sur des séquences. Elle est en fait spécialisée dans le
parcours d’une séquence de plusieurs données , par exemple les chaînes de
caractères.
L’instruction for se construit ainsi :
for element in sequence :
exemple :
chaine= ’Bonjour’
for lettre in chaine :
print(lettre)
Ce qui nous donne le résultat suivant :
B
o
n
j
o
u
r
Fonction range()
La fonction range() renvoie une séquence de nombres , à partir de 0 (par
défaut) et incrémente de 1 ( par défaut) et s’arrête avant un nombre spécifié.
Range(start,stop,step)
Exemple :
r=range(4)
for i in r :
print(i)
Ce qui nous donne le résultat suivant :
0
1
2
3
Exercice :
1) Ecrire un programme qui demande un entier naturel n à l’utilisateur ,
puis calcule et affiche 1+2+3….+n , ainsi que l’entier n*(n+1)/2 .
2) La suite de Fibonacci est la suite Fn définie par F0=0 , F1=1 et pour tout
entier naturel n>1 Fn=Fn-1+Fn-2
Ecrire un programme qui demande à l’utilisateur un entier n>1 et qui
affiche la valeur de Fn .
La boucle while
Elle permet de répéter un bloc d’instructions tant qu’une condition est vraie.
La syntaxe de while est :
while condition :
exemple :
n=7
i=0
while i < 10 :
print ( i+1, ‘*’, n , ‘=’ , (i+1)*n)
i += 1
Ce qui donne le résultat suivant :
1*7=7
2*7=14
3*7=21
4*7=28
5*7=35
6*7=42
7*7=49
8*7=56
9*7=63
10*7=70
Les mots-clés break et continue
Le mot-clé break
Le mot-clé break permet tout simplement d’interrompre une boucle.
Exemple :
while 1 :
lettre=input(‘tapez Q pour quitter’)
if lettre == ‘Q’ :
print (‘fin de la boucle’)
break
La boucle while a pour condition 1, c'est-à-dire une condition qui sera toujours
vraie. On demande à l’utilisateur de taper une lettre , tant que l’utilisateur ne
saisit pas Q , le programme lui demande de taper une lettre. Quand il tape Q le
programme affiche fin de la boucle et la boucle s’arrête grâce au mot-clé break.
Le mot-clé continue
Le mot-clé continue permet de continuer une boucle, en repartant directement
à la ligne du while ou for.
Exemple :
i=1
while i < 20 :
if i % 3 == 0 :
i +=4
print ( ‘ on incrémente i de 4. i est maintenant égal à ‘, i)
continue
print ( ‘ la variable i= ‘, i)
i += 1
Ce qui donne le résultat suivant :
la variable i=1
la variable i=2
on incrémente i de 4. i est maintenant égal à 7
la variable i=7
la variable i=8
on incrémente i de 4. i est maintenant égal à 13
la variable i=13
la variable i=14
on incrémente i de 4. i est maintenant égal à 19
la variable i=19
Exercices :
1) La conjecture de Syracuse
En mathématiques, on appelle suite de
Syracuse une suite d'entiers naturels définie de la manière
suivante : on part d'un nombre entier strictement positif ; s’il est
pair, on le divise par 2 ; s’il est impair, on le multiplie par 3 et on
ajoute 1. En répétant l’opération, on obtient une suite d'entiers
strictement positifs dont chacun ne dépend que de son
prédécesseur.
Par exemple, à partir de 14, on construit la suite des nombres : 14,
7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 4, 2…
C'est ce qu'on appelle la suite de Syracuse du nombre 14.
Ecrire un programme qui pour un entier naturel n entré par
l’utilisateur détermine et affiche le premier rang d’apparition de 1.
2) Codage et décodage affine
Pour transmettre un message secret, on utilise la procédure
suivante. A une lettre de l’alphabet , on associe le nombre lu dans
le tableau ci-dessous :
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
La création de fonctions
On crée une fonction selon le schéma suivant :
def nom_de_la_fonction(parametre1,parametre2,….,parametreN) :
Bloc d’instructions
Exemple :
def table(nb) :
i=0
while i < 10 :
print(i+1,’*’,nb,’=’,(i+1)*nb)
i +=1
L’instruction return
Les fonctions travaillent en général sur des données et renvoient le
résultat obtenu, suite à un calcul par exemple.
Exemple :
def carre (valeur) :
return valeur*valeur
L’instruction return signifie qu’on va renvoyer la valeur, pour pouvoir la
récupérer ensuite et la stocker dans une variable par exemple. Cette
instruction arrête le déroulement de la fonction, le code situé après le
return ne s’exécutera pas.
variable = carre(5)
Exemple :
f=lambda x : x*x
y=f(5)
Vous pouvez tout simplement stocker votre fonction lambda dans une
variable par une simple affectation. La variable y contiendra 25.
Exercices :
Définition
En Python, les listes sont des objets qui peuvent en contenir d’autres. Ce
sont donc des séquences, comme les chaines de caractères, mais au lieu
de contenir des caractères, elles peuvent contenir n’importe quel objet.
Création de listes
La syntaxe :
ma_liste=[]
Quand vous affichez la liste, vous pouvez constater qu’elle est vide. Entre
les crochets, il n’y a rien. Toutefois, on peut également créer une liste
non vide, en lui indiquant directement à la création les objets qu’elle doit
contenir.
ma_liste = [1,2,3,4,5]
print(ma_liste)
Affiche [1,2,3,4,5]
La liste que nous venons de créer compte cinq objets de type int. Mais
rien de tout cela n’est obligatoire.
- Vous pouvez faire des listes de toute longueur
- Les listes peuvent contenir n’importe quel type d’objet.
ma_liste = [1,3.5,’une cheine’,[j]]
Nous avons créé ici une liste contenant quatre objets de types
différents : un entier, un flottant, une chaîne de caractères et une autre
liste.
Voyons à présent comment accéder aux éléments d’une liste :
ma_liste=[‘c’,’f’,’m’]
print(ma_liste[0]) # affiche ‘c’ le premier élément de la liste
ma_liste[1]=’Z’ # on remplace ‘f’ par ‘Z’
print(ma_liste) # affiche [‘c’,’Z’,’m’]
Comme vous pouvez le voir , on accède aux éléments d’une liste en
indiquant entre crochets l’indice de l’élément qui nous intéresse.
Insérer des objets dans une liste
Ajouter un élément à la fin de la liste se fait par append.
ma_liste=|1,2,3]
ma_liste.append(67) # On ajoute 67 à la fin de la liste.
print(ma_liste) # affiche [1,2,3,67]
Insérer un objet dans une liste à l’endroit voulu se fait par insert.
ma_liste=[‘a’,’b’,’d’,’e’]
ma_liste.insert (2,’c’) # On insère ‘c’ à l’indice 2.
print(ma_liste) # affiche [‘a’,’b’,’c’,’d’,’e’]
La méthode remove
On peut aussi supprimer des éléments de la liste grâce à la méthode
remove qui prend en paramètre non pas l’indice de l’élément à
supprimer, mais l’élément lui-même.
ma_liste=[1,2,3,4]
ma_liste.remove(3) # On supprime l’élément 3
print(ma_liste) # affiche [1,2,4]
Le parcours de listes
ma_liste=[‘a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’]
i=0
while i < len(ma_liste) : # len(ma_liste) envoie le nombre d’éléments
print(ma_liste[i])
i += 1
ou
ma_liste=[‘a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’]
for elt in ma_liste :
print(elt)
La fonction enumerate
ma_liste=[‘a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’]
for elt in enumerate(ma_liste) :
print(elt)
(0,’a’)
(1,’b’)
(2,’c’)
(3,’d’)
(4,’e’)
(5,’f’)
(6,’g’)
(7,’h’)
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
CHAPITRE6 Récursivité
Une solution pour calculer cette somme consiste à utiliser une boucle for
comme dans le code suivant :
s=0
for i in range(n+1) :
s=s+i
return s
if n == 0 :
return 0
else :
Application : Faire une fonction récursive qui retourne la puissance n-ième d’un
nombre x.
def puissance ( x,n) :
if n == 0 :
return 1
else :
Il est également possible de définir une fonction avec plusieurs cas récursifs.
Par exemple , on peut donner une autre définition pour puissance ( x,n) en
distinguant deux cas récursifs selon la parité de n. En effet , si n est pair , on a
2 2
alors = . De même , si n est impair, on a alors = .
def puissance(x,n) :
if n==0 :
return 1
elif n==1 :
return x
else :
r=puissance(x,n//2)
if n%2==0 :
return r*r
else :
return x*r*r
def fibonacci(n) :
if n==0 :
return 0
elif n==1 :
return 1
else :
return fibonacci(n-2)+fibonacci(n-1)
Exercices :
Ecrire une fonction récursive C(n,p) qui renvoie la valeur de C(n,p), puis
Lorsque l’on veut répéter une opération pour chaque élément e d’un tableau t ,
il est possible d’utiliser l’instruction for directement sur le tableau lui-même, de
la manière suivante.
for e in t :
print(e)
Dans une telle forme, la boucle énumère les éléments du tableau : elle effectue
un tour pour chaque élément de t et l’élément inspecté à un tour donné est
associé à la variable e.
Exemple :
print(‘*’,d)
Directions possibles :
*Nord
*Sud
*Est
*Ouest
t[i] = 3*i + 1
Python propose une syntaxe plus compacte encore pour combiner l’allocation
d’un tableau et son remplissage par une boucle.
Cette nouvelle construction mélange les crochets, qui explicitent que l’on
construit un tableau, et les mots-clés de la boucle for de Python, qui explicitent
que l’on remplit ce tableau avec une boucle. On appelle cela la notation par
compréhension.
[1,25,81,169,289,441,625,841]
Avec Python on peut construire un tableau dont les éléments sont eux-mêmes
des tableaux.
t=[[1,2,3,4],[4,5,6,7],[7,8,9,1]]
affiche 8
u=t[2]
print (u[1])
affiche 8
Un tel tableau de tableaux est appelé un tableau à plusieurs dimensions. Sur
l’exemple ci-dessus, il y a deux dimensions, la première ayant la taille 3 et la
seconde la taille 4. Pour un tel tableau , o, dira que sa taille est 3x4.
Construction
Tuples
Les tuples sont des listes immuables, qu’on ne peut modifier. Un tuple se
définit comme une liste, sauf qu’on utilise comme délimiteur des parenthèses
au lieu des crochets.
Tuple_vide=()
Tuple_non_vide=(1,2,3)
A la différence des listes les tuples une fois créés , ne peuvent être modifiée :
on ne peut plus y ajouter d’objet ou en retirer.
Exemple :
def decomposer (x,y) :
q=x//y
r=x%y
return q,r
retour= decomposer(20,3)
Vous allez capturer un tuple contenant deux éléments : le quotient et le reste
de la division de 20 par 3.
Exercices :
1) Construire un tableau de taille 100 répétant la séquence 0,1,2.
2) Ecrire un programme qui construit un tableau t de taille 11x11, tel que
t[i][j] contient i*j
3) Ecrire un programme qui créé un tableau à deux dimensions de taille
30x30 contenant des entiers tirés au hasard entre 1 et 9999, puis
l’affiche.
4) Compléter le programme précédent pour calculer et afficher l’élément
maximum de tableau.
5) Ecrire une fonction qui prend en paramètre un tableau à deux
dimensions et qui renvoie le maximum parmi les minima de chaque
ligne.
6) Ecrire une fonction dessin qui prend en paramètre un tableau de
dimension deux contenant des booléens, et qui le dessine à l’aide de
Turtle en représentant chaque occurrence de True par un carré noir.
Projet :
Le puissance 4 est un jeu à deux joueurs qui se joue sur une grille verticale de
six lignes et sept colonnes. A tour de rôle, chaque joueur fait tomber un pion de
sa couleur dans une colonne de son choix non encore pleine. Le premier joueur
qui aligne quatre pions de sa couleur, horizontalement, verticalement ou en
diagonale, gagne la partie. La partie est nulle si la grille est totalement remplie
sans qu’aucun joueur ne gagne.
Pour représenter une grille de ce jeu, on utilise un tableau à deux dimensions
de taille 6*7, la première dimension représentant les lignes et la seconde les
colonnes. Une ligne est notée l et prend une valeur entre0 et 5, la ligne 0 étant
située en bas ; une colonne est notée c et prend une valeur entre 0 et 6, la
colonne 0 étant à gauche. Un joueur est noté j et prend la valeur 1 ou 2. Dans
une grille , notée g, la valeur 0 représente une case vide et la valeur 1 ou 2
représente un pion du joueur correspondant.
1) Ecrire une fonction grille_vide() qui renvoie une grille vide.
2) Ecrire une fonction affiche(g) qui affiche une grille, avec le caractère.
pour une case vide, le caractère x pour le joueur 1 et le caractère o pour
le joueur 2. On prendra bien soin de bien afficher les lignes de haut en
bas.
3) Ecrire une fonction coup_possible(g,c) qui renvoie un booléen indiquant
s’il est possible de jouer dans la colonne c.
4) Ecrire une fonction jouer(g,j,c) qui joue un coup du joueur j dans la
colonne c en supposant que la colonne c n’est pas pleine.
5) Ecrire trois fonctions horiz(g,j,l,c), vert(g,j,l,c) et diag(g,j,l,c) qui
déterminent respectivement s’il y a un alignement de quatre pions du
joueur j à partir de la case (l,c)
6) Ecrire une fonction victoire(g,j) qui renvoie un booléen indiquant si le
joueur j a gagné.
7) Ecrire une fonction match_nul(g) qui renvoie le booléen indiquant s’il y a
un match nul.
8) Ecrire une fonction coup_aleatoire(g,j) qui joue un coup aléatoire pour le
joueur j, en supposant que la grille n’est pas pleine.
9) Ecrire un programme qui fait jouer deux adversaires aléatoirement à tour
de rôle, en affichant la grille après chaque coup, et qui s’arrête dès qu’un
joueur gagne ou que la partie est nulle.