Python

Programmation en Python

Le Python est un language de programmation assez rependu notamment pour sa simplicité, son efficacité et sa gratuité. Pour le télécharger rendez vous sur le site de python et choisissez la dernière version.

En lisant ce post, vous aurez l’occasion de comprendre et de savoir comment à utiliser les bases de python. Cet article est fait par un amateur, il traite uniquement la base, uniquement ce qu’il trouve important, si vous voulez aller plus loin voici un excellent cours de python en pdf de l’université Paris Diderot.

Interpréteur / IDE

Il y a deux faces différentes, mais qui se complètent : L’interpréteur et l’IDE.

L’interpréteur c’est un peu ce qu’il se passe derrière, comme une console. Dans cet interpréteur tu peux faire des calculs, mais pleins d’autres choses comme mettre des variables ou des boucles. Mais concrètement comment il se présente ?

Capture d’écran de l’interpreter python

La ligne de commande se présente avec trois chevrons « >>> » et la commande peut être écrite derrière. Par exemple on peut faire des calculs, ou des calculs avec des variables :

Capture d’écran de l’interpréteur avec des calculs

Mais on peut également lancer une boucle etc… Voila des exemples

Capture d’écran de l’interpréteur avec une boucle « tant que »
Calcul d’une valeur approché du nombre d’or grâce à l’interpréteur

L’interpréteur sert donc dans des cas isolés pour faire des calculs, avec ou non des variables voir même avec des boucles.

Mais du coup… Comment faire lorsqu’on veut faire un « vrai » programme ?

L’IDE est quand à lui la « face caché », l’endroit ou on peut écrire le programme. Une fois sauvegardé, le programme peut s’exécuter autant de fois que nous le voulons. Pour lancer un programme il suffit de cliquer sur « Run » sur l’IDE ou le lancer.

Pour cela vous pouvez utiliser n’importe quel IDE, pour ma part j’utilise PyCharm, mais il en existe une multitude, même en ligne.

La programmation

La base

print()

Faisons notre premier programme, le but c’est qu’il affiche un message ! Pour cela on va utiliser la fonction print(). La fonction print s’écrit toujours avec des parenthèses fermés, et entre les parenthèses ce qu’on va lui demander de dire. Si on lui demande de dire :

print(Hello world)

Il ne va pas aimer, et sortir quelque chose comme ça :

print(Hello world)
                ^
SyntaxError: invalid syntax
Process finished with exit code 1

Il râle parce qu’il cherche à afficher une variable qui n’existe pas. Pour ce faire, il faut lui annoncer que c’est du texte en le mettant entre guillemets ou apostrophes (  » ou ‘ ). On obtient :

print("Hello world")

Super ! Tu as officiellement réussi ton premier programme !

Pour aller plus loin dans le print, tu peux faire un mélange de texte et de variables numériques. Pour cela il faut absolument mettre le texte entre guillemets et séparer les chaines de caractères (textes avec guillemets) des nombres par des virgules.

nom = "Valentin"
age = 17.345
print("Bonjour je suis", nom ,"et j'ai",age,"ans.")
formatage

Il existe également un formatage spécifique qui permet de raccourcir dans certains cas la notation. Les accolades spécifient l’endroit ou les variables vont être placé, et le .format(nom,age) définit quelles variables choisir dans chaque accolade. Le {:.0f} permet d’arrondir l’affichage à l’entier, mais vous pouvez arrondir au dixième avec 1 par exemple.

nom = "Valentin"
age = 17.346
print("Bonjour je suis {}  et j'ai {:.0f} ans".format(nom,age))

Le {:b} permet d’afficher la variable en nombre binaire.

nom = "Valentin"
age = 17
print("Bonjour je suis {} et j'ai {:b} ans".format(nom,age))

Voici les principales présentations que l’on peut faire dans ces accolades avec le type variable en haut à gauche. D’après docs.python.org traduit.

intTraduction
'b'Format binaire. Sort la variable en base 2.
'o' Format de l’octal. Sort la variable en base 8.
'd' / RienFormat décimal. Sort la variable en base 10. Par défaut
'x' Format hexadécimal. Sort la variable en base 16
floatTraduction
'e'Notation scientifique. Affiche la notation scientifique avec dans laquelle vous pouvez choisir la précision, et la mettre après le 'e' par défaut elle est égal à 6. Pour qu’il affiche un E majuscule, il suffit de le remplacer par 'E'
'f'Nombre arrondi. Vous pouvez mettre un point avec le nombre de décimales avant le 'f' pour choisir la précision.
'%' Pourcentage. Multiplie par 100 la valeur de la variable et ajoute un signe pourcentage à la fin.
RienAffiche la valeur du float telle qu’elle est connu.

Pour les chaines de caractères (strings) il existe seulement 's' qui est celle par défaut et qui affiche la chaîne de caractères.

Les variables

Les variables sont des entités qui peuvent changer au cours du temps, d’ou leur nom « variables ». Ces variables sont comme des emplacements, et chacun d’eux peut être un entier, un réel, mais aussi une chaîne de caractères. Commençons par les entiers.

int

De l’anglais integer, les variables « int » sont des entiers relatifs, par exemple 0,1,2,3… mais aussi -1,-2… Comment on définit un entier ? Tout simplement avec le nom de la variable suivit d’un égal puis de int ou de sa valeur de départ, qui est entier. Par exemple :

i = int
i = 0
i = i + 1
print(i)

Dans un premier temps on définit la variable nommé i comme un entier, puis on donne sa valeur de base qui est 0, ensuite on ajoute 1 à sa valeur de base. Enfin on réutilise la fonction print() mais cette fois sans les guillemets car c’est bien une variable. Le fait de définir le fait que la variable soit un entier n’est pas obligatoire dans ce cas, on peut enlever la première ligne, mais en se rappelant qu’on peut définir le type d’une variable comme ça.

float

float est un autre type de variable, comme les int c’est un nombre, mais là c’est un nombre à virgule, comme 1.4 ou -6.896.

Attention !!! En python il faut utiliser un point à la place de la virgule, le point à une autre signification.

str

string est encore un autre type de variable, mais cette fois ci ce n’est pas un nombre, c’est une chaîne de caractère, par exemple avion, 1234 ou valentin. Mais attends, tu viens de dire que c’est pas un nombre, pourquoi tu dis que ça peut être égal à 1234 ? Un caractère peut être n’importe quel signe du clavier, comme des lettres, ou des chiffres, mais ce type de variable n’a pas les propriétés des deux précédentes, elle ne permet pas de faire des calculs. Elle s’écrit également différemment des deux premières, il faut rajouter des guillemets ou des apostrophes autour de la chaîne de caractères. Voici la variable mot qui contient « Hello » :

mot = "Hello"

On peut toutefois la modifier, par exemple l’allonger, la raccourcir, ou la changer totalement. Exemple : j’écrit mon prénom dans la variable nom puis j’ajoute à la variable nom mon nom.

nom = "Valentin "
print(nom)
nom = nom + "Cassayre"
print(nom)

Une propriété intéressante d’une chaîne de caractère c’est que l’on peut par exemple la doubler avec chaîne * chaîne, ou additionner des chaînes avec chaîne + chaîne un exemple :

a = "co" ; b = "ri"
print(2*a+b+a)

Ca peut être utile si vous voulez rapidement écrire une longue chaîne de caractères :

print(20*("b"+"a"))

Ou pour modifier une chaîne de caractères, mais il faut penser aux "" ou aux '':

a = "Hello "
a = a + "World"
type

En python il est assez simple de passer d’une variable à une autre. Par exemple si tu définis une variable int puis que tu la transforme en un nombre à virgule, elle deviendra automatiquement un float. La fonction type permet de savoir à quel type de variable une variable appartient.

i = int
i = 1
print(type(i))
i = 1/2
print(type(i))

Lancez ce programme, vous constatez quoi ? Oui en effet, la variable i initialisé comme entier devient 0.5 donc un float.

Les symboles

Les opérations

Vous connaissez les opérations mathématiques ? Addition, soustraction, multiplication, division… etc. Et bien en python elles sont aussi présentes, mais peuvent avoir des notations différentes.

OpérationSymboleExemple
Addition'+'4+3 fait 7
Soustraction'-'6-2 fait 4
Multiplication'*'3*2 fait 6
Division'/'8/2 fait 4
Puissance'**'3**2 fait 9
Quotient de la division euclidienne'//'9//5 fait 1
Reste de la division euclidienne'%'9//5 fait 4

(Rappelle : Une division euclidienne en mathématiques s’écrit a=b*q+r avec q le quotient et r le reste, donc en python a//b est égal à q et a%b est égal à r)

Les affectations, égalités et inégalités

La plus grosse différence entre les symboles utilisés en mathématiques et ceux utilisés en python est le signe égal, qui a deux significations différentes. En effet en maths, le signe égal correspond à une égalité, en python ce symbole correspond à « prends la valeur« . L’équivalent de l’égalité en python est le double signe égal (==).

SignificationSymboleExemple
« prends la valeur »'='n=1,
n prends la valeur 1
« est égal à »'=='n==1,
est ce que n est égal à 1 ?
« est strictement inférieur à »'<'n<1,
est ce que n est strictement
inférieur à 1 ?
« est strictement supérieur à »'>' n>1,
est ce que n est strictement
supérieur à 1 ?
« est inférieur ou égal à »'<='n<=1,
est ce que n est inférieur
ou égal à 1 ?
« est supérieur ou égal à »'>=' n>=1,
est ce que n est supérieur
ou égal à 1 ?

Si tu rentres des égalités dans l’IDE, il va répondre True si elle est vraie et False si elle est fausse. Voilà un exemple :

Mais elles peuvent servir pour les boucles, pour par exemple définir la durée de la boucle.

Les listes

Une liste c’est une structure qui contient une série de valeurs. Elle se note NomDeListe = ['élément 1','élément 2','élément 3']. Cette liste peut comporter des valeurs de différents types, comme des chaînes de caractères ou des entiers, séparés par des virgules. Attention néanmoins, des chaînes de caractères doivent toujours être entourés de guillemets ou d’apostrophes. Exemple de liste possible :

liste = ["patates",3,"carottes",5,"radis",8]

Dans la liste, chaque valeur a une certaine position, appelé indice. L’indice est un entier, qui commence par 0. La dernière valeur d’une liste a donc pour indice n-1 avec n le nombre de valeurs dans la liste. Cet indice se note entre crochet à la suite du nom de la liste, sous la forme Liste[indice] (avec indice un entier). Par exemple dans la liste précédente si je veux le 3e élément de la liste je peux l’appeler avec : (Il aura donc comme indice 3-1=2)

print(liste[2])

L’indice peut également être négatif, dans ce cas l’indice -1 correspond au dernier nombre de la liste, -2 l’avant dernier.. etc jusqu’au premier.

Elles ont certaines propriétés en commun avec les chaînes de caractères, comme le fait qu’on puisse les additionner ou les multiplier par des entier.

a = ["Salut"]
a = 2* a + ["ça va ?"]

Mais vous pouvez également trancher une liste, cela permet de garde qu’une partie de la liste. Ca se note comme un indice mais avec un intervalle, Liste[a:b] avec l’intervalle mathématique [a;b[, le a est inclus et le b exclus. En réutilisant les deux propriétés suivante on obtient :

a = ["Salut"]
a = 2 * a + ["ça va ?"]
print(a[1:3])

On peut aussi préciser le pas avec deux-points supplémentaire. Avec le premier terme suivi du pas. Il peut par exemple simplement inverser les termes d’une liste, grâce à un pas négatif :

a = a[::-1]
range()

Ou alors on peut générer automatiquement des listes d’entiers avec la fonction range(). Exemple, une liste allant de 0 à 9, soit tous les chiffres.

list(range(10))

On peut maintenant calculer facilement la table de 2. Première ligne je crée la liste, allant de 0 à 20, et que je met dans la liste vierge a. Deuxième ligne je trie les nombres paires en utilisant le pas de 2.

a = list(range(21))
print(a[0::2])
Le pas

Mais, on peut ajouter un troisième paramètre qui est le pas. Ce qui nous permet de générer encore plus simplement la liste.

print(list(range(0,2*11,2)))
Les alternatives

Une autre méthode sans utiliser range():

a = []; i = 0
while i <= 10:
    a = a + [2 * i]
    i=i+1
print(a)

Dans cet exemple j’ai utilisé une boucle au lieu d’écrire manuellement une liste comprenant les nombres de 0 à 9 ou d’utiliser la fonction range. Voyons comment utiliser les boucles.

Les boucles

for

Les boucles for sont les boucles les plus simples, on sait à l’avance combien de fois la boucle va être répété. For signifie pour en français, en algorithmie on dit pour k allant de … à … avec k la variable (int) et les points de suspension signifient le début et la fin de la boucle. En python on peut choisir de faire aller la boucle de 0 à un nombre précis avec range(). Exemple :

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

Il va afficher la variable i à chaque passage dans la boucle, et à chaque passage la variable augmente de 1, c’est à dire 10 fois avec la boucle allant de 0 à 10. Il va donc afficher 10 chiffres, mais à partir de 0, donc il ne va pas afficher 10.

range()

Le problème, c’est que comme ça il affiche les nombre de 0 à … et non de 1 à … . Pour y remédier, on peut ajouter un autre paramètre au range(), on peut mettre un autre paramètre dans la boucle. On met le nombre initial séparé par une virgule du nombre final. Exemple, boucle des nombres de 1 à 9.

for i in range(1,10):
    print(i)
listes dans la boucle for

On peut aussi lire le contenu d’une liste dans une boucle for.

Liste = ["3","2","1"]
for i in Liste:
    print(i)

L’avantage de la boucle for c’est que la variable n’est pas forcément un nombre, il peut être également une chaîne de caractères. Exemple :

Liste = ["pierre","papier","ciseau"]
for i in Liste:
print(i)
enumerate()

La fonction enumerate()permet de raccourcir le code des boucles for, et de donner l’indice ainsi que la valeur de chaque ‘case’ de la liste. Voici un exemple qui calcule toutes les tables de multiplication de 1 à 10. Dans ce cas, la variable a correspond à la table traité, la b correspond à l’indice de la liste, et la c correspond à la valeur correspondante à l’indice b dans la liste.

for a in range(1, 11):
print("Table de {}".format(a))
for b, c in enumerate(list(range(0, a*11, a))):
print("{} * {} = {}".format(a, b, c))
while

while qui veut dire tant que est un autre type de boucle. Cette boucle consiste à opérer tant que l’opération est vraie. Un exemple, tant que la variable i est inférieur ou égal à 10, afficher i puis ajouter 1 à i. Il va afficher 10 fois i, car à la 11 e fois il verra que 11 est supérieur à 10. Une fois que l’opération n’est plus respecté il va sortir du corps de la boucle (dans ce cas la ligne 3 et 4) pour poursuivre le programme. Dans notre cas c’est quand i sera égal à 11 qu’il sortira de la boucle.

i = 1
while i <= 10:
    print(i)
    i = i + 1
boolean

L’opération qui suit le while est en réalité une variable, mais pas un entier, une chaîne etc… C’est une variable de type boolean, ou booléens en français. Une variable de ce type peut avoir deux sorties, une sortie 'True' et une 'False'. Exemple :

>> 1 == 2
False
>> 1 == 1
True