Choisir et reconnaître le type d'une variable : entier, flottant, booléen, chaîne de caractères
Comprendre et utiliser l'affectation
Écrire une instruction conditionnelle
Programmer une boucle bornée et une boucle non bornée
Écrire et appeler une fonction à un ou plusieurs arguments, qui renvoie un résultat
Écrire une fonction qui renvoie un nombre aléatoire et simuler une expérience
Notions clésvariable, type, affectationbooléen, conditionboucle for, rangeboucle whilefonction, argument, returnmodule random
Ce que tu sais déjà. Tu as écrit tes premiers programmes Python
(4e — Découvrir Python) et utilisé des boucles et des fonctions
(3e — Boucles et fonctions en Python). En Seconde, on fait le
point sur les types, et on s’entraîne à lire, écrire et faire tourner à la main des
programmes utiles en mathématiques. Tu en as déjà croisé plusieurs dans l’année (balayage, seuil…).
1. Variables, types et affectation
Une variable est un nom qui désigne une valeur stockée en mémoire. L’affectationx = 5 donne
la valeur 5 à la variable x. Le signe = n’est pas une égalité mathématique : x = x + 1
signifie « la nouvelle valeur de x est l’ancienne valeur plus 1 ».
Les quatre types à connaître.
Type
Nom Python
Exemples
entier
int
7, -3, 0
flottant (nombre à virgule)
float
3.5, 0.1, 7 / 2
booléen
bool
True, False
chaîne de caractères
str
"bonjour", "7"
La fonction type donne le type d’une valeur : type(7 / 2) renvoie float.
Après la ligne 2, a vaut 5 et b vaut 10. Après la ligne 3, a vaut 15 et b vaut toujours 10.
Attention aux flottants. Les nombres à virgule sont stockés en binaire, parfois de façon
approchée : 0.1 + 0.2 s’affiche 0.30000000000000004, et 0.1 + 0.2 == 0.3 vaut False. Pour
comparer deux flottants, on teste plutôt si leur écart est très petit.
Une condition est une expression qui vaut True ou False (un booléen). On les construit avec
les comparaisons == (égal), != (différent), <, <=, >, >=, et on les combine avec and,
or, not.
Python teste les conditions dans l’ordre et exécute seulement le premier bloc dont la condition
est vraie : mention(14) renvoie "Bien" (et pas "Assez bien", bien que 14⩾12).
L’indentation compte. Les instructions d’un bloc sont décalées de quatre espaces : c’est ainsi que
Python sait ce qui dépend du if.
Ne pas confondre= (affectation) et == (test d’égalité).
On utilise une boucle non bornéewhile (« tant que ») quand on ne sait pas à l’avance combien
de tours seront nécessaires : on répète tant qu’une condition est vraie.
n = 0p = 1while p <= 1000: p = p * 2 n = n + 1
La condition est testée avant chaque tour ; dès qu'elle est fausse, on sort de la
boucle.
À la sortie, n vaut 10 et p vaut 1024 : 210 est la première puissance de 2 qui
dépasse 1000. C’est un algorithme de seuil, comme dans les chapitres
Puissances et
Pourcentages.
Deux points de vigilance.
Il faut que la condition finisse par devenir fausse, sinon la boucle ne s’arrête jamais
(boucle infinie).
Condition d’arrêt et condition de répétition sont contraires : pour s’arrêter quand p > 1000,
on écrit while p <= 1000.
Une fonction regroupe des instructions sous un nom. Elle reçoit des arguments et renvoie un
résultat avec return.
def est_bissextile(annee): return (annee % 4 == 0 and annee % 100 != 0) or annee % 400 == 0
est_bissextile(2024) renvoie True, est_bissextile(1900) renvoie False,
est_bissextile(2000) renvoie True. Cette fonction renvoie un booléen.
Plusieurs arguments. Une fonction peut en recevoir plusieurs :
def seuil(valeur, taux, cible): n = 0 while valeur < cible: valeur = valeur * (1 + taux) n = n + 1 return n
return n’est pas print.printaffiche une valeur à l’écran ; returnrenvoie une valeur
qu’on peut réutiliser dans un calcul (2 * f(3), if est_bissextile(a):…). Dès qu’un return est
exécuté, la fonction s’arrête.
Le module random fournit des nombres pseudo-aléatoires :
randint(a, b) renvoie un entier au hasard entre a et b (inclus) ;
random() renvoie un flottant au hasard dans [0;1[.
from random import randintdef de(): return randint(1, 6)def frequence_six(N): compteur = 0 for i in range(N): if de() == 6: compteur = compteur + 1 return compteur / N
frequence_six(10000) renvoie une valeur proche de 61≈0,167 (par exemple 0,1627),
différente à chaque exécution. Plus N est grand, plus la fréquence obtenue est en général proche de
la probabilité (voir le chapitre Probabilités).
Exemple. Une fonction qui simule une pièce équilibrée :
from random import randomdef piece(): if random() < 0.5: return "pile" else: return "face"