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 un 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éveloppeurs qui s'entraident et l'enrichissent.
Ada Lovelace - 1843

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".

Guido van Rossum - 1989
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.
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 :
Code source (modification) :
Mémorisation 0x - Réussite 0/0
Qui a inventé le langage python ?
Cocher la bonne réponse.

Partie A : utiliser la console

2.1. Afficher «Hello World!»

La tradition en informatique veut que l'on affiche «Hello World!» à 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 dans la console python (partie inférieure d'Edupython) et appuyer sur "Entrée" pour l'exécuter.
print("Hello World!")

Les variables

  • Une variable permet de stocker une valeur. Son nom doit respecter quelques règles : ne pas commencer par un chiffre, ni une majuscule et ne pas comporter de caractère spéciaux.
    • Exemples de noms de variable interdits : 4var, Var et var$.
    • Exemples de noms de variable autorisés : var4, x et y_start.
  • On affecte une valeur (nombre, texte, ...) à une variable en utilisant le signe égal = .
    Exemple : x = 2 et mot = "bonjour" sont deux affectations ; la variable x contient un nombre entier (2) et la variable mot contient une chaîne de caractères (bonjour).
  • On peut afficher la valeur d'une variable en utilisant l'instruction print(...).

Dans la console Python, réaliser ces deux affectations x = 2 et mot = "bonjour" et utiliser les instructions print(...) et type(...) sur ces deux variables pour observer le résultat.

Les types de variables

nom (français)entiersflottantstextesbooléens
nom (anglais)integersfloatsstringsbooleans
type (nom python)intfloatstrbool
exemples2 , 1003 , -422.5 , -32.194 , 5.0"34" , "num : 2" , 'e'True , False
descriptionentier 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 et "False".

Opérations

opérationsymboleexemple
addition+3+7 donne 10
soustraction-3-7 donne -4
multiplication*3*7 donne 21
division/22/7 donne 3.142857142857143
quotient euclidien//22//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
Taper l'instruction python permettant d'obtenir :
la somme de 2 et 3
2 + 3

la somme de 2,3 et 3,2
2.3 + 3.2 Attention aux virgules qu'il faut remplacer par des points (Anglais).

4 à la puissance 2
4**2

la racine carrée de 25
25**0.5 ou 25**(1/2)

le reste de 123 divisé par 40
123%40

le quotient de 123 divisé par 40
123//40

la soustraction 1,4 - 0,4
1.4 - 0.4
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".
Code source (modification) :
Mémorisation 0x - Réussite 0/0/12
Qu'affiche ce script ?
print(5/2)

Saisir une variable au clavier

La fonction input() permet de demander à d'entrer une chaîne de caractère.
Exemples :
  • nom = input("Entrez votre nom : ") permet de demander à l'utilisateur de saisir son nom puis d'affecter sa réponse à la variable nom.
  • age = input("Quel est ton age ? ") Ici la variable age est une chaîne de caractère str.
    Pour la convertir en un entier, on doit utiliser une conversion int(age).
  • n = int(input("Quel est ton age ?"))
    Ici la réponse de la fonction input() est donnée directement à la fonction int() pour qu'elle soit convertie en un entier.
  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. Trouver le moyen d'additionner les variables n et age sans que l'ordinateur ne renvoie une erreur.
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.
Grace Hopper

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).

testsymboleexemple
é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
Vrai True

3 != 2 and 4 < 7
Vrai True

3 != 2 or 4 > 7
Vrai True
Code source (modification) :
Mémorisation 0x - Réussite 0/0
Associer à chaque fonction native de python son rôle :
type
str
print
input
int
Glisser-déposer pour former les bonnes paires.

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 ).

3.1. 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 !" pour une note supérieure ou égale à 18/20, "Très bien" si elle est supérieure ou égale à 16/20, "Bien" au-dessus ou égale à 14/20, "Assez Bien" au dessus ou égale à 12/20, "Passable" au dessus ou égale à 10/20 et "Ajourné" sinon.
  3. Faire valider par le professeur.
Code source (modification) :
Mémorisation 0x - Réussite 0/0/11
Quel est la valeur finale de b ?
a = 1 b = 6 if a > 5:     b = b - 4
Doit être un entier.

Définition d'une fonction

Si l'on veut facilement réutiliser plusieurs fois un même bout de code (définir une procédure), on peut créer une fonction :
  • le mot clé def suivi du nom de la fonction et ses paramètres 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) renvoie 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 une température en °C en paramètre et renvoie la température en °F.
  2. Exécuter le script.
  3. Appeler la fonction pour convertir 100°C en °F.La valeur que doit renvoyer la fonction est 212.0
  4. Faire valider par le professeur.
Code source (modification) :
Mémorisation 0x - Réussite 0/0
Compléter la phrase : En python, le mot clé {rep1} permet de créer une fonction tandis que le mot-clé {rep2} permet de définir ce qu'elle renvoie.

3.3. 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" renvoie "houlahoulahoula").

Faire valider par le professeur.

figure à afficher : Ici, n = 5 au départ
# 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] renvoie 12, a[1] renvoie 5 et a[2] renvoie 9.
    a[-1] renvoie 9 et a[-2] renvoie 5. Les indices négatifs permettent de parcourir la liste à partir de la fin.
  • Fonctions sur les listes :
    nom (en anglais)syntaxerenvoie
    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.)syntaxerenvoieé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]

3.5. 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 ; end='' permet d'éviter ce comportement.
for chiffre in  [1, 2, 3, 4, 5, 6, 7, 8] :
    for lettre in 'ABCDEFGH' :
        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]
Code source (modification) :
Mémorisation 0x - Réussite 0/0
Associer chaque structure à son rôle :
Une boucle (structure itérative)
Une fonction (structure procédurale)
Une structure conditionnelle
Glisser-déposer pour former les bonnes paires.

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 :
  • Le site de documentation de python fournit l'aide sur les fonctions, méthodes et modules disponibles ;
  • il est aussi possible de taper help(nom_fonction) dans la console ;
  • ne pas hésiter à faire une recherche en ligne pour obtenir des informations.
Le module random (hasard)
Écrire en haut du script :
import random
syntaxeutilisationdoc
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"]
  3. Faire valider par le professeur.
Le module math (fonctions mathématiques)
Écrire en haut du script :
import math
syntaxeutilisationdoc
math.pifournit le nombre π🕮
math.ceil()arrondi à l'entier supérieur🕮
math.floor()arrondi à l'entier supérieur🕮
math.cos()cosinus🕮
math.sin()sinus🕮