if/elif/else)for) et non bornée (while)Seconde — 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), mathematicien perse, est considère comme le pere de l’algebre et de l’algorithmique. Le mot algorithme vient de la latinisation de son nom : Algoritmi.
Dans son ouvrage sur le calcul indien, il decrit des procedures de calcul systematiques — les ancetres de nos algorithmes modernes. Ses méthodes, etape par etape, pour résoudre des équations sont exactement ce qu’on appelle aujourd’hui un algorithme : une suite finie d’instructions precises.
📜 Lire l’article — Euclide et Thābit : le plus vieil algorithme →
L’ordinateur choisit un nombre secret entre 1 et 100. A chaque essai, il repond « trop grand » ou « trop petit ». Quel est le nombre minimum d’essais pour être sur de trouver ?
Une recette de cuisine est un algorithme : les ingredients sont les données, les étapes de preparation sont les instructions, le plat final est le résultat.
Problème : Convertir une température de Celsius en Fahrenheit.
Algorithme :
| Type | Nom Python | Exemples |
|---|---|---|
| Entier | int | 3, -7, 0 |
| Flottant (décimal) | float | 3.14, -0.5, 1.0 |
| Booleen | bool | True, False |
| Chaine de caracteres | 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 reussi = 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 mathematiques, \(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 multiplier.
celsius = float(input("Temperature en Celsius : ")) # float() pour convertir
fahrenheit = 1.8 * celsius + 32
print("En Fahrenheit :", fahrenheit)Pour echanger les valeurs de a et b, on utilise une variable temporaire ou l’affectation simultanee :
# Méthode 1 : variable temporaire temp = a a = b b = temp # Méthode 2 : affectation simultanee (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")| Operateur | Signification |
|---|---|
== | egal a |
!= | différent de |
<, > | strictement inférieur, supérieur |
<=, >= | inférieur ou egal, supérieur ou egal |
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 a \(n-1\)range(a, b) : de \(a\) a \(b-1\)range(a, b, p) : de \(a\) 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'est", secret, "!")
Si la condition ne devient jamais False, la boucle ne s’arrete jamais. Il faut toujours s’assurer que la condition finira par devenir fausse.
return.
def nom_fonction(parametre1, parametre2): 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_de(): """Simule un lancer de de a 6 faces.""" return randint(1, 6) # Simuler 10 lancers for i in range(10): print(lancer_de(), end=" ")
print affiche une valeur a l’ecran 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 prenoms = ["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 vide | 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 carres = [] for n in range(1, 6): carres.append(n * n) print(carres) # [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.
| 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 |
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 ordonne, a proposer systematiquement le milieu de l’intervalle restant, puis a eliminer la moitié qui ne contient pas la valeur cherchee. A chaque etape, le nombre de possibilites est divise par 2.
Applique a notre jeu : pour un nombre entre 1 et 100, on propose 50 ; selon la reponse « plus petit » ou « plus grand », on restreint a l’intervalle \([1\,;\,49]\) ou \([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 approchee 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 est-elle vraie ?
FAUX. Un algorithme donne un résultat correct, mais pas forcement le plus rapide. Il existe souvent plusieurs algorithmes pour un même problème, avec des vitesses tres 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 est-elle vraie ?
FAUX. Si la condition du while ne devient jamais fausse, la boucle tourne indefiniment : 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 est-elle vraie ?
FAUX. elif n’est evalue que si le if precedent (et les elif precedents) sont faux. Deux if successifs sont evalues independamment.
elif pour des cas mutuellement exclusifs, et plusieurs if pour des conditions independantes.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 est-elle vraie ?
FAUX. Une fonction sans return renvoie None par defaut, sans erreur. Elle peut tres 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 est-elle vraie ou fausse ?
C’est VRAI ! range(5) produit les entiers 0, 1, 2, 3, 4 — soit 5 valeurs commencant a 0.
range(n) donne n valeurs de 0 à n-1. C’est un intrus parmi les pieges !Mini-test : combien de valeurs produit range(10) ?
🔗 Voir la section sur les boucles