Débuter avec Python

Introduction

Un langage de programmation

Dans cette partie, vous allez apprendre à écrire des programmes, c'est-à-dire à prendre le contrôle de l'ordinateur.
La première personne a avoir écrit un programme informatique est Ada Lovelace en 1843 sur une ordinateur mécanique à l'époque.

Il existe de nombreux langages de programmation. Nous allons apprendre les bases du langage python car :

  • il est multi-plateforme c'est-à-dire qu'il peut être utilisé sur des machines différentes (Windows, Mac ou Linux).
  • sous licence libre, c'est-à-dire qu'il peut être utilisé librement, sans droit d'auteur.
  • il utilise une syntaxe simple de haut niveau, c'est-à-dire qui se rapproche du langage humain.
  • et il possède une large communauté de développeur qui s'entraident et l'enrichissent.

Guido van Rossum a inventé et programmé une première version du langage python en 1989 pendant ses vacances de Noël. Étant un fan des Monthy Python, il a choisi d'appeler son langage "python".

photo A Lovelace
Ada Lovelace - 1843
photo G V Rossum
Guido van Rossum - 1989
logo python
Logo Python

Environnement de développement intégré (EDI)

Les logiciels qui permettent d'éditer, de sauvegarder et d'exécuter des instructions s'appellent des Environnement de Développement Intégré (EDI ou IDE en anglais).
Au lycée nous utiliserons EduPython (disponible sur le bureau de votre session). Il est constitué :
  • d'un éditeur de script (en haut). Il permet d'écrire plusieurs instructions pour créer un programme. Il est possible de le sauvegarder sous forme d'un fichier texte avec l'extension .py et de l'exécuter avec le bouton EXECUTER (flèche verte ).
  • d'une console python (en bas, >>>). C'est là que l'on peut interagir directement avec l'interpréteur python en lui donnant des instructions une par une et observer ses réponses.
capture pyscripter
Interface d'EduPython

Remarque : Vous avez aussi la possibilité d'éditer et d'exécuter du code python dans des EDI directement en ligne sur Internet :

Partie A : utiliser la console

Afficher : print « Bonjour Monde »

La tradition en informatique veut que l'on affiche « Bonjour Monde ! » à l'écran lorsqu'on débute l'apprentissage d'un langage.
La fonction print() permet d'afficher une chaîne de caractères (un texte : "...") dans la console.
Copier-coller cette instruction :
print("Hello World !")
dans la console python (partie inférieure d'Edupython) et appuyer sur "Entrée" pour l'exécuter.

Les variables

Dans la console Python, faire ces deux affectations et utiliser les instructions print(...) et type(...) sur les deux variables enregistrées.

Les types de variables

nom (français) entiers flottants textes booléens
nom (anglais) integers floats strings booleans
type (nom python) int float str bool
exemples 2 ; 1003 ; -42 2.5 ; -32.194 ; 5.0 "34" ; "num : 2" ; 'e' True ; False
description entier relatif (avec signe) nombre décimal (valeur approchée) ; séparateur : . (et pas ,) texte encadré par "..." ou '...' Vrai ou Faux (2 valeurs possibles)
conversion (si possible sinon erreur) int(3.6)3
int("3")3
float(3)3.0
float("3.05")3.05
str(3.6)"3.6"
str(3+5.0)"8.0"
bool(0)False
bool(0.5)True
bool("v3")True
bool("")False
En utilisant type(...), vérifier les types des éléments : -2 ; -2.5 ; -4.0 ; "False".

Opérations

opération symbole exemple
addition + 3+7 donne 10
soustraction - 3-7 donne -4
multiplication * 3*7 donne 21
division / 22/7 donne 3.142857142857143
quotient euclidien // 3//7 donne 3
reste euclidien % 22%7 donne 1
puissance ** 3**7 donne 2187
racine carrée (puissance 1/2) **(1/2) 3**(1/2) donne 1.7320508075688772
racine cubique (puissance 1/3) **(1/3) 5**(1/3) donne 1.7099759466766968
Remarque : sur des chaînes de caractères, on a deux opérations intéressantes :
  • Répétition : entier * chaîne ; exemple : 3*"Bac" donne "BacBacBac" ;
  • Concaténation : («coller») avec + ; exemple : "Bac"+"2025" donne "Bac2025".
Calculer (si c'est possible) et donner les types de : 2+5.0 ; 4 puissance 1000 ; racine carrée de 30000 ; reste de 123 divisé par 40 ; 1.4-0.4 ; "3"+"4" ; 10*"5". Vérifier avec Python.

Saisir une variable au clavier

La fonction input() permet de demander à l'utilisateur du programme d'entrer une chaîne de caractère.
Exemples :
  1. Dans la console python, exécuter les instructions précédentes et vérifier le type des variables nom, age et n grâce à la fonction type().
  2. Faire apparaître et comprendre le message d'erreur lorsqu'on cherche à convertir une chaine de caractères quelconque en un entier.

Remarque : Le terme bug a été inventé par Grace Hopper en référence à un insecte coincé dans un ordinateur en 1974 et qui avait généré un problème.

Les tests et conditions

Si l'on veut vérifier une égalité ou une inégalité, on doit écrire un test ; la réponse à un test toujours un booléen (type bool), c'est à dire True (vrai) ou bien False (faux).

test symbole exemple
égalité == 3==7 donne False
différent de != 3!=7 donne True
strictement inférieur < 3<7 donne True
strictement supérieur > 3>7 donne False
inférieur ou égal <= 22<=7 donne False
supérieur ou égal >= 22>=7 donne True
Remarque : il est possible d'assembler ces tests pour construire des conditions plus complexes grâce aux mots-clés and (et), or (ou) et not :
  • not a inverse le booléen a. Vrai devient Faux et Faux devient Vrai.
  • a and b Cette expression renvoie Vrai seulement quand les tests a et b sont vrais.
  • a or b Cette expression renvoie Vrai quand a ou b ou les deux en même temps sont vrais.
Prévoir à quel booléen (Vrai ou Faux) correspondent les tests suivants puis les tester directement dans la console python :
not 3 == 2   ;  3 != 2 and 4 > 7   ;  3 != 2 or 4 > 7

Partie B : Écrire des programmes

Nous allons quitter la console python pour commencer à écrire nos premiers programmes dans l'éditeur (partie supérieure) d'Edupython. Il nous sera alors possible de les sauvegarder sous la forme d'un fichier texte avec l'extension .py et de les exécuter avec le bouton Executer (flèche verte ).

Les conditions if/else (si/sinon)

On peut exécuter une partie du code uniquement si une condition est respectée. Pour cela on utilise une structure conditionnelle avec le mot-clé if :
  • Si la condition est vraie, les instructions indentées (décalées) sur les lignes suivantes seront exécutées.
  • Une indentation en python est un décalage de quatre espaces au début de la ligne.
  • On peut utiliser le mot clé else (sinon) pour exécuter des instructions dans le cas ou la condition n'est pas respectée (est fausse).
Exemple 1 :

note = int(input("Entrez votre note : "))

if note >= 10 :
    print("J'ai la moyenne !")
else : 
    print("Il faut travailler davantage !")
Pour des situations plus complexes :
  • Il est possible d'imbriquer les blocs, c'est-à-dire de créer des blocs dans d'autres blocs. Il faut alors faire attention à cumuler les indentations.
  • On peut aussi tester d'autres conditions, les unes à la suite des autres, avec le mot-clé elif qui est une contraction de "else if" (sinon si).
Exemple 2 :

note = int(input("Entrez votre note : "))

if note >= 10 :
    print("J'ai la moyenne !")
    if note > 17 :                    # if imbriqué dans un bloc if
        print("Et je suis au top !")  # bloc indenté 2 fois !
        print("Trop fort !")
elif note >= 12 :                     # condition supplémentaire  
    print("C'est assez bien !")       
else : 
    print("Il faut réviser davantage !")
  1. Recopier et exécuter les exemples précédents.
  2. Créer un programme qui demande la moyenne obtenue sur 20 au bac et donne la mention correspondante: "Très bien. Félicitations !" au dessus de 18/20, "Très bien" au dessus de 16/20, "Bien" au dessus de 14/20 et "Assez Bien" au dessus de 12/20.

Définition d'une fonction

Si l'on veut facilement réutiliser plusieurs fois un même bout de code, on peut définir une fonction :
  • le mot clé def suivi du nom de la fonction et ses arguments entre parenthèses. Il est impératif de terminer cette ligne par deux-points :
  • l'indentation (décalage de 4 espaces) pour inclure des instructions dans le bloc de la fonction.
  • le mot clé return est placé avant ce que doit renvoyer la fonction.
Une fois qu'une fonction est définie, il est possible de l'utiliser : on dit alors qu'on l'appelle (call en anglais).
Exemple :

def tester_pair(nombre) :
    if nombre % 2 == 0 :
        return True
    else :
        return False
    
Appel de la fonction :
tester_pair(5)False
Pour convertir un température en degrés Celsius (°C) vers une température en degrés Fahrenheit (°F), il suffit de multiplier par 1,8 et d'ajouter 32.
  1. Écrire une fonction qui prend tc (température en °C) en paramètre et retourne tf (température en °F).
  2. Exécuter le script.
  3. Appeler la fonction pour convertir 100°C en °F.

Boucle while (tant que)

Une boucle while permet de répéter des instructions tant qu'une condition est vraie.

Comme le nombre de répétitions n'est pas connu dès le départ, on parle de boucle non-bornée.

Attention à bien modifier la condition à l'intérieur de la boucle pour éviter de tomber dans une boucle infinie.
Dans l'exemple ci-contre, on modifie n dans la boucle grâce à l'instruction n = n - 1.
Ainsi, lorsque n devient nul, on ne peut plus rester dans la boucle puisque la condition d'entrée est devenue fausse n > 0.

Pour stopper une boucle infinie, il faut stopper l'exécution du programme (croix rouge ×) et/ou réinitialiser le moteur python. (Pour EduPython : Menu Exécuter / Moteur Python / Réinitialiser).

Exemple :

import time   # pour utiliser les mesures de temps

n = int(input("Durée du compte à rebours ? "))

print("Décollage dans " + str(n) + " secondes.")

while n > 0 :
    time.sleep(1)    # attendre 1 seconde
    n = n - 1
    print("Il reste " + str(n) + " secondes.")

print("Allumage des moteurs !")

Écrire un programme qui utilise une boucle while.
Votre programme doit demander un nombre entier positif n à l'utilisateur et afficher le résultat suivant, avec n points sur sa première ligne.

Aide : L'opération * est utilisable avec une chaine de caractères pour la répéter (par exemple 3*"houla""houlahoulahoula").

figure à afficher :

                        # n points au départ
..... 
....
...
..
.

Listes

Une liste s'écrit entre deux crochets [...] et regroupe des éléments séparés par des virgules.

Exemple : a = [12, 5, 9]
  • Indices de position :
    Ils repèrent la position des éléments de la liste en commençant par 0.
    a[0]12 a[1]5 a[2]9
    a[-1]9 a[-2]5
    Les indices négatifs permettent de parcourir la liste à partir de la fin.
  • Fonctions sur les listes :
    nom (en anglais) syntaxe renvoie
    Longueur (length) len(a) 3
    Somme (sum) sum(a) 26
    Minimum (minimum) min(a) 5
    Maximum (maximum) max(a) 12
  • Méthodes sur les listes
    Elles modifient la liste sur laquelle elles s'appliquent.
    nom (en ang.) syntaxe renvoie état a = [12, 5, 9] après
    Éjection (pop) a.pop() 9 [12, 5]
    Indice (index) a.index(12) 0 [12, 5, 4]
    Enlever (remove) a.remove(5) None [12, 9]
    Trier (sort) a.sort() None [5, 9, 12]
    Renverser (reverse) a.reverse() None [9, 5, 12]

Boucle for (pour)

Une boucle for permet de répéter des instructions un certain nombre de fois.
Ce nombre de répétitions est connu dès le départ, on parle de boucle bornée.

  • range(N) représente la liste des entiers partant de 0 et strictement inférieurs à N.
  • On peut aussi répéter à partir des valeurs d'une liste, comme avec ls dans l'exemple 2.
Exemple 1 :

for n in range(4) :
    print(n)
Affichage obtenu :
    
0
1
2
3
Exemple 2 :

ls = [5,2,7]

for n in ls :
    print(n * "a")
Affichage obtenu :
    
aaaaa
aa
aaaaaaa
Échiquier
Exécuter ce programme et expliquer le résultat affiché.
Aide : ligne 3 : à la fin d'un print, python revient à la ligne ; sep='' évite ce comportement.

for chiffre in  [1, 2, 3, 4, 5, 6, 7, 8] :
    for lettre in ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'] : 
        print('['+lettre+str(chiffre)+']', end='')
    print()
Affichage obtenu :
    
[A1][B1][C1][D1][E1][F1][G1][H1]
[A2][B2][C2][D2][E2][F2][G2][H2]
[A3][B3][C3][D3][E3][F3][G3][H3]
[A4][B4][C4][D4][E4][F4][G4][H4]
[A5][B5][C5][D5][E5][F5][G5][H5]
[A6][B6][C6][D6][E6][F6][G6][H6]
[A7][B7][C7][D7][E7][F7][G7][H7]
[A8][B8][C8][D8][E8][F8][G8][H8]

Importer des modules

De nombreuses fonctions et méthodes ont déjà été programmées par d'autres utilisateurs de python. Elles sont classées dans des modules (ou bibliothèques). Pour pouvoir les utiliser, il faut les importer au début de votre programme grâce au mot import :
import nom_du_module
Remarques : Deux bibliothèques peuvent être très utiles au lycée :
Le module random (hasard)
Écrire en haut du script :
import random
syntaxe utilisation doc
random.randint(a, b) entier aléatoire entre a et b 🕮
random.choice(liste) élément aléatoire dans liste 🕮
Écrire une instruction qui :
  1. simule un lancer de dé (6 faces) ;
  2. tire une carte au hasard dans la liste :
    cartes = [7, 8, 9, 10, "valet", "dame", "roi"]
Le module math (fonctions mathématiques)
Écrire en haut du script :
import math
syntaxe utilisation doc
math.pi fournit le nombre π 🕮
math.ceil() arrondi à l'entier supérieur 🕮
math.floor() arrondi à l'entier supérieur 🕮
math.cos() cosinus 🕮
math.sin() sinus 🕮

S'entraîner