
Python est un langage de programmation relativement ancien qui a été développé à la fin des années 80. Ce n’est pas du tout à cause du serpent que Python s’appelle comme ça, mais parce que son créateur hollandais Guido van Rossum était un fan des Monty Python (une série anglaise des années 70). Guido van Rossum s’est inspiré du langage ABC pour élaborer son propre langage, le Python qui a vu le jour en 1991. Il a reçu en 2002 le prix du logiciel libre pour Python.
Python est utilisé dans de nombreux domaines, particulièrement dans la data science (analyse de données et statistiques), en machine learning (intelligence artificielle, en gros c’est lorsqu’on essaie d’apprendre aux machines à réfléchir en analysant des données), dans le développement Web et même en robotique. Des sites très connus ont été développés en Python comme par exemple, Dropbox, Youtube, Spotify, Reddit ou encore Pinterest. Depuis quelques années il fait parti des langages les plus utilisés dans le monde (il est même le 1er langage depuis 2 ou 3 ans).
En Python, on peut effectuer les calculs de base qu'on fait en mathématiques.
Pour ajouter 2 nombres, on utilise +
Pour soustraire 2 nombres, on utilise -
Pour multiplier 2 nombres, on utilise *
Pour diviser 2 nombres, on utilise /
Pour calculer une puissance, on utilise **
Pour calculer le reste d'une division euclidienne (nombres entiers), on utilise %
Pour calculer le quotient d'une division euclidienne, on utilise //
Nativement, Python ne sait faire que ces calculs (mais il existe, heureusement, des façons de faire les autres calculs rencontrés en mathématiques).
Attention la virgule décimale utilisée en France est remplacée par le . (notation anglo-saxonne)
2.45 + 3
5.45
3 - 7.2
-4.2
3 * 5.72
17.16
24 / 10
2.4
2**3
8
13 % 5
3
37 // 5
7
# priorités opératoires
3 + 4*5
23
On peut voir une variable comme un "conteneur" (une sorte de boite), utilisé par un programme pour stocker de l’information. Comme son nom l'indique, une variable peut changer de valeur au fur et à mesure du programme.
Elle est formée de 2 parties :
Son nom qui est noté avec une suite de caractères alphanumériques (il ne doit pas y avoir d'espace ni certains caractères spéciaux et les caractères accentués sont déconseillés).
Sa valeur (la donnée qu’elle stocke).
Pour "affecter" une valeur à une variable en Python, on utilise le signe =.
On peut ensuite utiliser cette variable qui conserve la valeur affectée tant qu'on ne la change pas en en affectant une autre.
valeur1 = 12
valeur2 = -7.12
On vient d'affecter les nombres 12 et -7,12 aux variables nommées valeur1 et valeur2.
valeur1
12
valeur1 + valeur2 * 3
-9.36
nouvelle_valeur = valeur1 + valeur2
nouvelle_valeur
4.88
Exemple :
a = 2
b = 3
a = b
a
3
a = 2
b = 3
b = a
a
2
On remarque que dans les 2 cas a n'a pas la même valeur donc a = b n'est pas équivalent à b = a.
Remarque : On peut nommer presque comme on veut une variable mais certains mots sont réservés par le langage, si vous les utilisez, Python renverra une erreur.
Par exemple :
def = 3
File "/var/folders/gr/nnnhfsqj6lxffx2h6vbljwp40000gn/T/ipykernel_14551/645252264.py", line 1 def = 3 ^ SyntaxError: invalid syntax
if = 12
File "/var/folders/gr/nnnhfsqj6lxffx2h6vbljwp40000gn/T/ipykernel_14551/1866128748.py", line 1 if = 12 ^ SyntaxError: invalid syntax
On vient de voir sur des exemples comment affecter des nombres à des variables. En Python, il existe deux types de nombres : les entiers (integer en anglais, de type int en Python) et les flottants (type float en Python) qu'on assimilera pour simplifier à des nombres décimaux. Mais on peut aussi affecter du texte à une variable, c'est ce qu'on appelle une chaîne de caractères (string en anglais, de type str en Python) :
Exemple :
mon_nom = "personne" # attention à ne pas oublier les ""
mon_nom
'personne'
Dans ce cas, la variable mon_nom contient la chaine de caractères "personne". On notera que les chaînes de caractères sont notées entre " " ou entre ' '. Ainsi, si on veut affecter le caractère "2" à une variable a, on notera :
a = "2"
a
'2'
Le type d’une variable est la nature de l’information qu’elle contient.
Par exemple, son âge et son dernier SMS reçu n’ont pas la même nature : le premier est un nombre et le second est un texte (chaîne de caractères).
Voici les trois types Python de base qui nous intéressent :
En Python on parle du type int (pour integer qui signifie "entier" en anglais) ;
le type flottant : pour simplifier, nous dirons qu'il désigne les nombres décimaux (à virgule). En Python on parle du type float (pour floating qui signifie "flottant" en anglais)
le type chaîne de caractères : il désigne toute suite ordonnée de caractères. En Python on parle du type str (pour string qui signifie "chaîne" en anglais).
En informatique, une fonction est une portion de programme qui réalise une tâche bien précise et qui pourra être utilisée autant de fois qu'on le désire sans avoir besoin de retaper du code.
En mathématiques, une fonction est un procédé qui permet d'associer à un nombre, un unique autre nombre appelé image. En quelque sorte on "rentre" un nombre x dans la fonction et elle "renvoie" un nombre f(x) qui est appelé l'image de x. Comme souvent en informatique, la notion mathématique n'est pas loin et une fonction en informatique est aussi basée sur cette idée :

Le langage utilisé n'est pas le même qu'en mathématiques. La variable "rentrée" dans la fonction est appelée paramètre ou argument (il peut y avoir plusieurs valeurs et donc plusieurs paramètres).
C'est facile de définir une fonction en Python mais il faut respecter une certaine structure dans la façon d'écrire le code.
Voici un exemple très proche des mathématiques :
def f(x):
y = x ** 2 + 1
return y
Pour définir une fonction, on utilise le mot Python def, on lui donne un nom (f dans notre exemple) et on note entre parenthèses ses paramètres, c'est à dire les valeurs qui seront utilisées par la fonction.
⚠ Cette première ligne doit impérativement se terminer par le caractère :.
Comme on peut le remarquer, à partir de la 2ème ligne, le code ne commence pas au début de la ligne. On dit qu’on fait une indentation. Cette indentation est obligatoire pour que Python comprenne où commence la fonction (avec le mot def) et où elle s'arrête. Les instructions qui ont la même indentations forment un bloc d'instructions.
Le dernier mot Python utilisé dans la fonction est le mot return. Il n'est pas obligatoire mais s'il est utilisé, il permet à la fonction de renvoyer une valeur qu'on peut par exemple affecter ensuite à une variable. Dans ce premier exemple, la fonction ainsi définie correspond à la fonction mathématique définie par : $$f:x\longmapsto x^2+1$$
La fonction f définie en Python permet donc de retourner la valeur d'une image d'un nombre x par la fonction f. Pour obtenir ces valeurs, il suffit d'appeler la fonction en indiquant son nom et son paramètre, c'est à dire de la même façon que ce qu'on note en mathématiques.
Exemples :
f(3)
10
a = f(-2.1)
a
5.41
On a bien obtenu les images des nombres 3 et -2,1 par la fonction f. Dans le 2ème cas, on a affecté la valeur retournée par la fonction f grâce au return à la variable a.
Remarque : Il est possible de définir des fonctions qui ne prennent aucun paramètre (on laisse quand même les parenthèses en les définissant), ou bien des fonctions sans "return" c'est à dire qui ne renvoient rien (elles peuvent, par exemple, se contenter de faire de l'affichage ou d'appeler d'autres fonctions).
Exemple : La fonction suivante prend deux paramètres qui doivent être des chaînes de caractères.
def ma_fonction(chaine1, chaine2):
return chaine1 + " " + chaine2
ma_fonction("bonjour", "le monde")
'bonjour le monde'
Remarque : Si on ne met pas deux chaines de caractères, le programme va renvoyer une erreur car Python ne réussira pas à interpréter chaine1 + " " + chaine2 si les variables chaine1 et chaine2 ne sont pas des chaînes de caractères.
ma_fonction(2, 3)
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) /var/folders/gr/nnnhfsqj6lxffx2h6vbljwp40000gn/T/ipykernel_14551/1320612858.py in <module> ----> 1 ma_fonction(2, 3) /var/folders/gr/nnnhfsqj6lxffx2h6vbljwp40000gn/T/ipykernel_14551/900817701.py in ma_fonction(chaine1, chaine2) 1 def ma_fonction(chaine1, chaine2): ----> 2 return chaine1 + " " + chaine2 TypeError: unsupported operand type(s) for +: 'int' and 'str'
Nous allons maintenant voir une structure fondamentale en programmation le " si ... alors ... sinon ...". Si (if en anglais donc en Python) une condition est vérifiée, alors le programme exécute certaines instructions et sinon (else en anglais) le programme en exécutera d'autres.
Voyons tout de suite un exemple :
age = 25
if age >= 18:
print("Tu es majeur") #print() = fonction qui permet d'afficher un str ou la valeur d'une variable
else:
print("Tu es mineur")
Tu es majeur
Dans cet exemple, on commence par affecter la valeur 12 à la variable age.
La structure conditionnelle commence à la ligne 2 avec le mot Python if. Tout comme pour définir une fonction, la ligne se termine obligatoirement par le caractère : et la ligne suivante est indentée.
Si la condition est vérifiée, le programme exécutera le bloc d'instructions qui suit la ligne du if (c'est à dire les lignes qui sont indentées)
sinon le programme passera au else qui suit et exécutera le bloc d'instructions qui suit le else.
La valeur de la variable age étant 25, la condition age >= 18 est vraie et donc le programme affiche "Tu es majeur".
Si on change la valeur de age et qu'on affecte une valeur stictement inférieure à 18, dans ce cas le programme va afficher "Tu es mineur".
Remarque : Il est tout à fait possible de faire une instruction conditionnelle avec juste if sans utiliser else.
Exemple :
a = 2
if a == 2:
print("Bravo")
Bravo
a = 3
b = 3
a == b #permet de vérifier si 2 variables sont égales
True
Exemple :
0.1 + 0.2
0.30000000000000004
0.1 + 0.2 == 0.3
False
Ainsi pour Python 0,1+0,2 n'est pas égal à 0,3...
Remarque et complément : Il existe, en plus, en Python une autre instruction qu'on peut utiliser dans les instructions conditionnelles : elif. Elif est une contraction de else if, c'est à dire "sinon si".
Exemple :
note = 13
if note >= 16:
print("Très bonne note")
elif note >= 12:
print("Note correcte")
elif note >= 8:
print("bof bof")
else:
print("ds raté")
Note correcte
La note est de 13, elle n'est pas supérieure ou égale à 16 donc la premiere condition n'étant pas vérifiée, Python passe à la condition suivante (le 1er elif) et teste si la note est supérieure ou égale à 12, cette fois c'est le cas donc il exécute le bloc qui suit, c'est à dire l'affichage de "Note correcte". Attention dans un tel cas à l'ordre dans lequel vous écrivez vos elif, si, par exemple, on inverse note>=12 avec note>=8 alors dans ce cas la réponse sera "bof bof".
La notion de boucle est fondamentale en informatique. *Une boucle permet d'exécuter plusieurs fois de suite le même bloc d'instructions*.
Par exemple si on veut écrire un programme qui génère la table de multiplication de 7, une (mauvaise) solution serait de répéter 10 fois le calcul et de l'afficher (avec son résultat) à l'aide de la fonction print(). Cela va fonctionner mais il faudra répéter 10 fois de suite (presque) la même ligne de code et en plus sans pouvoir utiliser de copier/coller (puisque les nombres vont changer à chaque ligne). La notion de boucle va éviter ce travail fastidieux.
Une boucle conditionnelle permet de répéter un bloc d'instructions tant qu'une condition est vraie. On utilise pour cela l'instruction while en Python ("tant que" en anglais). Par exemple dans un jeu vidéo, le joueur peut jouer tant qu'il n'est pas mort ou le match dure tant que le temps imparti n'est pas écoulé.
Exemple :
a = 5
while a > 0:
print(a) #affiche la valeur de a
a = a - 1 #retire 1 à la valeur de a
5 4 3 2 1
On remarque que la structure de la boucle while est (encore) identique à celle de l'instruction conditionnelle if.
La ligne avec while se termine obligatoirement par le caractère : et le bloc d'instructions qui suit (identifié par l'indentation) est exécuté tant que la condition est vraie. Dès que la condition devient fausse (ici dès que a prend une valeur inférieure ou égale à 0), la boucle s'arrête.
Par exemple : Si on retire la dernière ligne du programme précédent, la condition sera toujours vraie et le programme va afficher des 5 jusqu'à ce qu'on l'arrête manuellement.
Une boucle non conditionnelle permet de répéter n fois, n étant un nombre entier connu, une instruction (ou un bloc d'instructions). Contrairement à la boucle conditionnelle, il n'y a pas de condition qui doit être vérifiée, avant de l'exécuter, mais il faut savoir combien de fois on veut répéter le bloc d'instructions. Pour cela on utilise les mots for (pour) et in (dans).
Exemple :
for i in range(0, 8): #range(0,8) correspond à l'intervalle des nombres entiers compris entre 0 inclus et 8 exclu
print("blabla") #on va afficher "blabla"
blabla blabla blabla blabla blabla blabla blabla blabla
On constate que la structure de cette boucle est encore identique à la structure précédente.
La fonction range(a,b) permet à la variable i (dans notre cas, mais on peut la nommer comme on veut) de prendre comme valeur tous les nombres entiers compris entre a (inclus) et b (exclu).
On peut éviter de préciser la valeur initiale si celle-ci est 0, ainsi pour Python, si on note i in range(10), il remplacera successivement i par tous les nombres entiers de 0 à 9.
Exemple : Calcul de la somme des 30 premiers nombres entiers strictement positifs.
s = 0
for i in range(1, 31): #attention 31 est exclu donc i va aller de 1 à 30
s = s + i #on va ajouter à chaque tour la valeur de i à la somme s
print(s)
465