Cours de Python - Premiers pas en Python pour personnes ayant déjà programmé

version 1.1.0, dernière mise à jour le 29 août 2021.

   

Table des matières (TdM)

  1. I. Introduction
    1. Utilisation en ligne de commande
      1. Lancer et quitter Python
      2. Entrées/sortie
      3. Utilisation de fichiers
      4. Exercice : Entrées/sorties
    2. Conventions
    3. Opérateurs
  1. II. Listes et tableaux
    1. Introduction
    2. Manipuler une liste
      1. Créer une liste
      2. Ajouter des valeurs
      3. Afficher une valeur
      4. Exercice : Création et affichage d'une liste
      5. Supprimer des valeurs
      6. Inverser les valeurs
    3. Obtenir des informations
    4. Copier une liste
      1. Exercice : Manipulation de liste
  1. III. Tests et boucles
    1. Tests
      1. Test conditionnel if, if else
      2. Exercice : Tester
    2. Boucles
      1. Boucle for
      2. Exercice : Boucle for
      3. Exercice : Boucle for (difficile)
      4. Boucle while
      5. Exercice : Boucle while
  1. IV. Fonctions
    1. Définition d'une fonction
      1. Définition de base
      2. Utilisation de valeurs par défaut
      3. Exercice : Définition d'une fonction
    2. Portée d'une variable

Retour au menu

Contenu du cours

I. Introduction

1. Utilisation en ligne de commande

a. Lancer et quitter Python

Python permet de produire des applications, mais est aussi disponible en ligne de commande pour tester le fonctionnement d'un script. Il suffit de le lancer en tapant python à une invite de commande. Pour quitter, il suffit de taper quit() ou exit() (ne pas oublier les parenthèses !)

b. Entrées/sortie

Il peut être utile d'afficher le résultat d'un calcul, une chaîne de caractères, etc. La fonction print() permet de le faire. Attention, en Python 2, les parenthèses n'étaient pas obligatoires. Elles le deviennent en Python3 et on écrira ainsi print("Bonjour"). Écrire print('Bonjour','tout le monde') insère automatiquement un espace et produit "Bonjour tout le monde" à l'écran. Il est tout à fait possible de procéder à des calculs et les afficher : print("Résultat :", 2+3).

Une saisie au clavier se fait à l'aide de la fonction input. Par exemple, x=input("Entrez une chaîne de caractères : ") permet d'affecter une chaîne de caractères saisie par l'utilisateur à la variable x à l'invite "Entrez une chaîne de caractères : ". Attention, cette fonction, comme en JavaScript, retourne une chaîne de caractères.

c. Utilisation de fichiers

Le code peut être écrit dans un fichier, portant traditionnellement l'extension py. Dans ce cas, le script est lancé par la commande python nomFichier.py.

Exercice 1. Entrées/sorties

Énoncé
Correction

>Retour à la TdM

2. Conventions

Un commentaire commence par le caractère #. Tout ce qui suit jusqu'au retour à la ligne n'est pas interprété. Ainsi, pour écrire un commentaire de plusieurs lignes, il est nécessaire de faire débuter chaque ligne par #.

L'indentation demande une attention toute particulière en Python car à la différence de la plupart des langages, les blocs d'instructions ne sont pas délimités par des accolades, mais sont définis par l'indentation. Si on revient à la ligne sans indenter dans un bloc d'instructions, ce dernier est considéré comme terminé. Nous y reviendrons plus loin.

Les noms de variables respectent les mêmes contraintes que dans les autres langages. Attention cependant : en Python, les variables sont en fait des références à des objets. L'opérateur d'affectation = permet de définir à quel objet un nom de variable fait référence. Concrètement, si on écrit...

Dans le premier cas en effet, à cause de l'affectation b=2, a et b à la fin de l'opération font référence à deux objets distincts. Dans le second, ils continuent à référencer le même objet, dont on change seulement le premier élément donc quand on modifie l'objet référencé par b, le résultat de l'évaluation de a change aussi...

>Retour à la TdM

3. Opérateurs

Les opérateurs classiques restent +, -, * et /. En Python2, / renvoyait le quotient de la division euclidienne mais ce n'est plus le cas en Python3.

D'autres opérateurs arithmétiques sont moins courants, comme // qui renvoie le quotient de la division euclidienne (par exemple 9/8 renvoie 1), et ** qui permet d'élever à une puissance donnée (par exemple, 2**3 renvoie 8)

>Retour à la TdM

II. Listes et tableaux

1. Introduction

Les listes en Python vont au-delà de la simple notion de tableau. Si on peut concevoir une liste sous la forme simple et habituelle ["pain","beurre", "confiture"], en fait une liste peut incorporer des éléments de types différents, comme [1,2,"trois"]...

>Retour à la TdM

2. Manipuler une liste

a. Créer une liste

La manière la plus simple de créer une liste consiste à l'affecter à une variable, comme nous l'avons vu précédemment : a=[1,4,6] par exemple. Mais si l'on souhaite initialiser une liste à une suite arithmétique de nombres, on peut utiliser la fonction range. Par exemple, b=list(range(1,44,7)) va créer une liste comportant tous les nombres compris entre 1 et 44 inclus, par pas de 7, soit [1, 8, 15, 22, 29, 36, 43]. Si le dernier argument est omis, le pas vaut 1 par défaut, et c=list(range(1,44)) renvoie une liste comportant tous les nombres entiers compris entre 1 et 43 inclus. Enfin, d=list(range(44)) renvoie une liste comportant tous les nombres entiers compris entre 0 et 43 inclus.

b. Ajouter des valeurs

On peut ajouter à une liste déjà créée soit un dernier item unique, à l'aide de la méthode append(), soit une autre liste avec la méthode extend(). Par exemple, a=[1,2];a.append(3) donne comme résultat [1,2,3]. Et a=[1,2];a.extend([3,4]) donne comme résultat [1,2,3,4]. On peut d'ailleurs aussi utiliser l'opérateur + : b=a+[3,4] qui donne le même résultat ([1,2,3,4]).

On peut aussi « multiplier » une liste. Par exemple, a=[1,2]*3 donne au final pour a la valeur [1,2,1,2,1,2].

c. Afficher une valeur

Supposons définie la liste a=[2,3,4,5,6]. Classiquement, a[0] nous permet d'obtenir le premier élément de la liste, ici 2. Mais Python permet facilement d'afficher tout ou partie de cette liste. Ainsi...

Exercice 1. Création et affichage d'une liste

Énoncé
Correction
d. Supprimer des valeurs

On peut supprimer un élément de liste de deux manières :

e. Inverser les valeurs

On peut aussi inverser l'ordre des éléments d'une liste avec la méthode reverse() : si a vaut [1,2,3,4], a.reverse();print(a) renvoie [4,3,2,1].

>Retour à la TdM

3. Obtenir des informations

Plusieurs fonctions et méthodes permettent d'obtenir des informations sur une liste. Supposons par exemple que a=list(range(1,5)) (autrement dit, a vaut [2,3,4,5]) :

>Retour à la TdM

4. Copier une liste

Nous avons vu précédemment que si on écrit a=[1,2,3,4] puis b=a;b[1]=6 alors on la valeur renvoyée par a est [1,6,3,4]. Afin de pouvoir copier une liste, il faut en fait affecter ses valeurs dans une nouvelle liste. Ainsi, si on écrit b=a[:]; b[1]=6, la valeur de a n'est pas changée au contraire de celle de b.

Exercice 1. Manipulation de liste

Énoncé
Correction

>Retour à la TdM

III. Tests et boucles

1. Tests

a. Test conditionnel if, if else

La syntaxe d'un test est simple, mais il faut prendre garde à l'indentation :

if test:
  #Instruction 1
  #Instruction 2
  #Instruction 3
#Fin du test...

Il en est de même pour un test if... else, les instructions if et else devant être alignées :

if test:
  #Instruction 1
  #Instruction 2
  #Instruction 3
else:
  #Instruction si test échoué 1
  #Instruction si test échoué 2
#Fin du test...

Exercice 1. Tester

Énoncé
Correction

>Retour à la TdM

2. Boucles

a. Boucle for

La boucle for, en Python, a une syntaxe légèrement différente des autres langages. Pour faire l'équivalent d'une boucle de 3 itérations, on écrira...

for i in range(3):
  print(i)

Si on veut parcourir les éléments d'une liste, on peut recourir à la fonction len :

a = ["pain", "beurre", "confiture", "miel"]
for i in range(len(a)):
  print(a[i])

Mais on peut aussi indexer directement la liste (cette syntaxe ressemble à ce qu'il est possible de faire en JavaScript) :

a = ["pain", "beurre", "confiture", "miel"]
for i in a:
  print(i)

Exercice 1. Boucle for

Énoncé
Correction

Exercice 2. Boucle for (difficile)

Énoncé
Correction
b. Boucle while

La boucle while a, elle, une syntaxe tout à fait similaire à d'autres langages...

i=0
while i<3 :
  print(i)
  i = i+1
print("Fin de la boucle")

Exercice 3. Boucle while

Énoncé
Correction

>Retour à la TdM

IV. Fonctions

1. Définition d'une fonction

a. Définition de base

La syntaxe générale est la suivante...

def nomFonction (paramètres) :
  #Bloc d'instructions

Par exemple...

def additionne (x,y) :
  return x+y

Il faut noter que Python considère que toute fonction doit renvoyer un résultat.

b. Utilisation de valeurs par défaut

On peut très facilement indiquer des valeurs par défaut pour le jeu de paramètres d'une fonction. Il suffit de les spécifier dans la définition de la fonction :

def additionne (x=1,y=2) :
  return x+y

Si on appelle par exemple additionne(3), alors le second paramètre est supposé présent et égal à sa valeur par défaut. Le résultat renvoyé au final dans ce cas est donc 5.

Cette syntaxe permet de plus d'appeler les paramètres par leurs étiquettes. Par exemple, avec la même définition de fonction, additionne(y=3) renvoie 4 car x est supposé présent et valoir sa valeur par défaut, 1. Il est alors possible de changer l'ordre d'apparition des paramètres, par exemple additionne(y=3,x=4).

Exercice 1. Définition d'une fonction

Énoncé
Correction

>Retour à la TdM

2. Portée d'une variable

Par défaut en Python, les variables sont locales. Si on définit une variable dans le corps principal du programme, nommée maVariable, et qu'on utilise une variable nommée également maVariable dans une fonction, cette variable sera locale. Autrement dit, sa portée ne dépassera pas celle de la fonction et même si on redéfinit sa valeur à l'intérieur de la fonction, la valeur de la variable globale ne sera pas modifiée. Si l'on souhaite modifier la variable globale à l'intérieur de la fonction, il faut déclarer cette variable explicitement, sous la forme global maVariable.

On peut donc constater que ce fonctionnement est à l'opposé du JavaScript. Dans ce dernier langage en effet, les variables sont par défaut globales, et on restreint leur portée avec le mot-clef var. En Python, les variables sont par défaut locales, et on étend leur portée avec le mot-clef global.

>Retour à la TdM

Historique de ce document

Conditions d'utilisation et licence

Creative Commons License
Cette création est mise à disposition par Gilles Chagnon sous un contrat Creative Commons.

Retour au menu