if/elif/else)for) et non bornée (while)appendSeconde — Nouveau programme (BO 2026) · Math@mine
On souhaite écrire un programme qui convertit une température de degrés Celsius en degrés Fahrenheit. La formule est : \(F = 1{,}8 \times C + 32\).
Muhammad ibn Musa al-Khwarizmi (vers 780–850), mathématicien perse, est considéré comme le père de l’algèbre et de l’algorithmique. Le mot algorithme vient de la latinisation de son nom : Algoritmi.
Dans son ouvrage sur le calcul indien, il décrit des procédures de calcul systématiques — les ancêtres de nos algorithmes modernes. Ses méthodes, étape par étape, pour résoudre des équations sont exactement ce qu’on appelle aujourd’hui un algorithme : une suite finie d’instructions précises.
📜 Lire l’article — Euclide et Thābit : le plus vieil algorithme →
L’ordinateur choisit un nombre secret entre 1 et 100. À chaque essai, il répond « trop grand » ou « trop petit ». Quel est le nombre minimum d’essais pour être sûr de trouver ?
Une recette de cuisine est un algorithme : les ingredients sont les données, les étapes de préparation sont les instructions, le plat final est le résultat.
Problème : Convertir une température de Celsius en Fahrenheit.
Algorithme :
Voici la traduction Python de l'algorithme ci-dessus, avec la ligne de calcul à compléter.
| Type | Nom Python | Exemples |
|---|---|---|
| Entier | int | 3, -7, 0 |
| Flottant (décimal) | float | 3.14, -0.5, 1.0 |
| Booleen | bool | True, False |
| Chaîne de caractères | str | "Bonjour", 'Python' |
print()La fonction print() affiche à l’écran le contenu passé entre parenthèses. On l’utilise pour visualiser une valeur, un résultat de calcul ou un message :
print("Bonjour") → affiche Bonjourprint(2 + 3) → affiche 5print("Âge :", age) → affiche par exemple Âge : 16On peut passer plusieurs arguments séparés par des virgules ; ils sont affichés côte à côte avec un espace.
age = 16 # int taille = 1.72 # float réussi = True # bool nom = "Alice" # str print(type(age)) # <class 'int'> print(type(taille)) # <class 'float'>
5 est un entier (int), mais 5.0 est un flottant (float)."5" est une chaîne de caractères (str), pas un nombre !True et False commencent par une majuscule en Python.| Opérateur | Rôle | Exemple | Résultat |
|---|---|---|---|
+ | Addition | 7 + 3 | 10 |
- | Soustraction | 7 - 3 | 4 |
* | Multiplication | 7 * 3 | 21 |
/ | Division flottante (résultat float) | 7 / 3 | 2.333... |
// | Division entière (quotient) | 7 // 3 | 2 |
% | Modulo (reste de la division entière) | 7 % 3 | 1 |
** | Puissance | 2 ** 5 | 32 |
Pour tout entier \(a\) et tout entier \(b > 0\), la division euclidienne donne \(a = b \times q + r\) avec \(0 \leqslant r < b\) :
a = 47 b = 6 q = a // b # quotient = 7 r = a % b # reste = 5 print(q, r) # 7 5 print(a == b * q + r) # True
n % 2 == 0a % b == 0n % 10=. En langage naturel, on écrit \(\leftarrow\).
x = 5 # x contient 5 x = x + 3 # x contient maintenant 8 y = 2 * x # y contient 16 print(x, y) # Affiche : 8 16
En mathématiques, \(x = x + 3\) est une équation sans solution. En Python, x = x + 3 signifie : « calculer x + 3 et stocker le résultat dans x ».
input() retourne toujours du texteLa fonction input() renvoie une chaîne de caractères (str), même si l’utilisateur tape un nombre. Pour faire des calculs, il faut convertir :
int(input("...")) → entierfloat(input("...")) → nombre à virguleSans conversion, input() + 1 déclenche une erreur TypeError, et input() * 3 répète le texte 3 fois au lieu de multipliér.
celsius = float(input("Temperature en Celsius : ")) # float() pour convertir
fahrenheit = 1.8 * celsius + 32
print("En Fahrenheit :", fahrenheit)Pour echanger les valeurs de à et b, on utilise une variable temporaire ou l’affectation simultanée :
# Méthode 1 : variable temporaire temp = a a = b b = temp # Méthode 2 : affectation simultanée (Python) a, b = b, a
if condition: instructions si vrai elif autre_condition: instructions si autre condition vraie else: instructions sinon
Contrairement à d’autres langages, Python utilise l’indentation (décalage à droite par 4 espaces) pour délimiter les blocs d’instructions. Tout le bloc exécuté dans un if, else, for ou while doit être indenté exactement de la même manière.
IndentationError.age = int(input("Quel age as-tu ? "))
if age >= 18:
print("Tu es majeur.")
else:
print("Tu es mineur.")n = float(input("Entre un nombre : "))
if n > 0:
print("Positif")
elif n < 0:
print("Negatif")
else:
print("Nul")| Opérateur | Signification |
|---|---|
== | égal à |
!= | différent dé |
<, > | strictement inférieur, supérieur |
<=, >= | inférieur ou égal, supérieur ou égal |
On peut combiner des conditions avec and, or, not.
for i in range(n): instructions
La variable i prend successivement les valeurs \(0, 1, 2, \ldots, n-1\). Le bloc est exécuté \(n\) fois.
n = int(input("Quelle table ? "))
for i in range(1, 11):
print(n, "x", i, "=", n * i)n = 100 s = 0 for i in range(1, n + 1): s = s + i print("Somme =", s) # Affiche 5050
range(n) : de 0 à \(n-1\)range(a, b) : de \(a\) à \(b-1\)range(a, b, p) : de \(a\) à \(b-1\) avec un pas de \(p\)while condition:
instructionsTant que la condition est True, le bloc est exécuté. Des que la condition devient False, on sort de la boucle.
p = 1 n = 0 while p <= 1000: p = p * 2 n = n + 1 print("2 ^", n, "=", p) # Affiche : 2 ^ 10 = 1024
from random import randint secret = randint(1, 100) essai = 0 while essai != secret: essai = int(input("Ton essai : ")) if essai < secret: print("Trop petit !") elif essai > secret: print("Trop grand !") print("Bravo, c'n’est", secret, "!")
Si la condition ne devient jamais False, la boucle ne s’arrête jamais. Il faut toujours s’assurer que la condition finira par devenir fausse.
return.
def nom_fonction(paramètre1, paramètre2): instructions return resultat
def celsius_vers_fahrenheit(c): """Convertit des Celsius en Fahrenheit.""" return 1.8 * c + 32 print(celsius_vers_fahrenheit(0)) # 32.0 print(celsius_vers_fahrenheit(100)) # 212.0 print(celsius_vers_fahrenheit(37)) # 98.6
def aire_rectangle(longueur, largeur): return longueur * largeur print(aire_rectangle(5, 3)) # 15
from random import randint def lancer_dé(): """Simule un lancer de dé à 6 faces.""" return randint(1, 6) # Simuler 10 lancers for i in range(10): print(lancer_dé(), end=" ")
On veut coder la fonction \(f\) définie par : \(f(x) = 1 + \sqrt{x}\) si \(x \geqslant 0\), et \(f(x) = (x-1)^2\) si \(x < 0\).
from math import sqrt def f(x): if x >= 0: y = 1 + sqrt(x) else: y = (x - 1) ** 2 return y print(f(2)) # 2.4142135623730951 print(f(-3)) # 16.0
La condition if/else choisit la bonne formule selon le signe de x avant de returnner le résultat : une fonction Python peut très bien contenir une instruction conditionnelle.
print affiche une valeur à l’écran mais ne renvoie rien.return renvoie une valeur qu’on peut stocker dans une variable ou utiliser dans un calcul.math et randomPython propose des modules : des bibliothèques de fonctions prêtes à l’emploi. Au programme de Seconde :
from math import sqrt, cos, sin, pi — racine carrée, trigonométrie, constante \(\pi\)from random import randint, random — entier aléatoire, nombre réel dans \([0\,;\,1[\)from math import sqrt, pi print(sqrt(2)) # 1.4142135... print(pi) # 3.141592...
notes = [12, 15, 9, 17, 13] # liste de 5 entiers prénoms = ["Anna", "Bob", "Inès"] print(notes[0]) # 12 (premier élément, indice 0) print(notes[2]) # 9 print(notes[-1]) # 13 (dernier élément) print(len(notes)) # 5 (longueur de la liste)
0.len(L) - 1 (ou -1).L[len(L)] provoque une erreur (IndexError) — l’indice est hors limite.| Opération | Syntaxe | Résultat |
|---|---|---|
| Longueur | len(L) | nombre d’éléments |
| Accès | L[i] | élément d’indice i |
| Modification | L[i] = v | remplace l’élément d’indice i |
| Ajout en fin | L.append(x) | ajoute x à la fin |
| Test d’appartenance | x in L | True ou False |
| Liste vidé | L = [] | aucune valeur |
fornotes = [12, 15, 9, 17, 13] # Parcourir les valeurs total = 0 for n in notes: total = total + n print("Somme :", total) # Somme : 66 print("Moyenne :", total / len(notes)) # Moyenne : 13.2 # Parcourir les indices (utile pour modifier) for i in range(len(notes)): notes[i] = notes[i] + 1 # bonus de +1 sur chaque note print(notes) # [13, 16, 10, 18, 14]
append# Liste des carrés des entiers de 1 à 5 carrés = [] for n in range(1, 6): carrés.append(n * n) print(carrés) # [1, 4, 9, 16, 25]
Une chaîne "Bonjour" se manipule presque comme une liste de caractères : "Bonjour"[0] donne "B", len("Bonjour") vaut 7, etc. La grande différence : une chaîne est immuable (on ne peut pas faire s[0] = "X"), alors qu’une liste est modifiable.
On veut compter combien de fois un caractère donné apparaît dans une phrase, en parcourant chaque position avec une boucle for.
def nb_occurrences(phrase, car): l = len(phrase) n = 0 for k in range(l): if phrase[k] == car: n = n + 1 return n print(nb_occurrences("Je programme en Python", "e")) # 3
La variable n compte le nombre de fois où phrase[k] vaut car, en testant tour à tour chaque indice k de 0 à len(phrase) - 1.
| Notion | Python |
|---|---|
| Affectation | x = valeur |
| Saisie utilisateur | input("message") |
| Affichage | print(valeur) |
| Conditionnelle | if / elif / else |
| Boucle bornée | for i in range(n): |
| Boucle non bornée | while condition: |
| Fonction | def f(x): return ... |
| Nombre aléatoire | from random import randint |
| Liste (tableau) | L = [...], L[i], len(L), L.append(x) |
int, float, bool, strreturnOn définit une fonction qui applique la formule \(F = 1{,}8 \times C + 32\), puis on l’appelle avec la valeur saisie.
def celsius_vers_fahrenheit(c): return 1.8 * c + 32 c = float(input("Temperature en Celsius : ")) print("Soit", celsius_vers_fahrenheit(c), "Fahrenheit")
Quelques résultats : \(0°C \to 32°F\), \(100°C \to 212°F\), \(37°C \to 98{,}6°F\) (température corporelle).
Principe de la dichotomie. La recherche dichotomique (du grec dikha, « en deux », et tomos, « coupe ») consiste, pour trouver un élément dans un intervalle ordonné, à proposer systématiquement le milieu de l’intervalle restant, puis à éliminer la moitié qui ne contient pas la valeur cherchée. À chaque étape, le nombre de possibilités est divisé par 2.
Appliqué à notre jeu : pour un nombre entre 1 et 100, on propose 50 ; selon la réponse « plus petit » ou « plus grand », on restreint à l’intervalle \([1\,;\,49]\) où \([51\,;\,100]\) ; on recommence avec 25 ou 75, etc.
Il faut au maximum 7 essais. En effet, après \(k\) essais le nombre de possibilités a été divisé par \(2^k\). Comme \(2^6 = 64 < 100\) mais \(2^7 = 128 > 100\), 7 essais suffisent toujours.
La dichotomie est un algorithme fondamental en informatique (recherche dans un tableau trie, résolution approchée d’une équation, etc.).
Algorithmique et Python : teste d’abord ton intuition, puis lis l’explication.
« Un algorithme donne toujours le résultat le plus rapide. »
Cette affirmation n’est-elle vraie ?
FAUX. Un algorithme donne un résultat correct, mais pas forcément le plus rapide. Il existe souvent plusieurs algorithmes pour un même problème, avec des vitesses très différentes.
Mini-test : un algorithme doit obligatoirement être le plus rapide possible ?
🔗 Travaille dans les exercices sur l’algorithmique
« Une boucle while s’exécute toujours un nombre fini de fois. »
Cette affirmation n’est-elle vraie ?
FAUX. Si la condition du while ne devient jamais fausse, la boucle tourne indéfiniment : c’est une boucle infinie.
while True: pass.Mini-test : que fait while True: print('ok') ?
🔗 Travaille dans les exercices sur les boucles
« if et elif sont interchangeables. »
Cette affirmation n’est-elle vraie ?
FAUX. elif est évalué que si le if précédent (et les elif précédents) sont faux. Deux if successifs sont évalués indépendamment.
elif pour des cas mutuellement exclusifs, et plusieurs if pour des conditions indépendantes.Mini-test : si x = 5, combien de branches sont exécutées avec if x>3: ... elif x>4: ... ?
🔗 Travaille dans les exercices sur les conditions
« Une fonction sans return renvoie une erreur. »
Cette affirmation n’est-elle vraie ?
FAUX. Une fonction sans return renvoie None par défaut, sans erreur. Elle peut très bien effectuer des actions (afficher, modifier une liste) sans rien renvoyer.
return = la fonction renvoie None. Ce n’est pas une erreur.Mini-test : que renvoie def f(): print('bonjour') quand on fait x = f() ?
🔗 Travaille dans les exercices sur les fonctions
« range(5) donne les entiers de 0 à 4. »
Cette affirmation n’est-elle vraie ou fausse ?
C’est VRAI ! range(5) produit les entiers 0, 1, 2, 3, 4 — soit 5 valeurs commençant à 0.
range(n) donne n valeurs de 0 à n-1. C’est un intrus parmi les pièges !Mini-test : combien de valeurs produit range(10) ?
🔗 Voir la section sur les boucles