Logique, ensembles et listes Python
Le programme officiel de maths comporte trois parties transversales, qui servent dans tous les chapitres : « Vocabulaire ensembliste et logique », « Algorithmique et programmation » (avec la notion de liste) et « Automatismes » (traités dans la page qui leur est consacrée). Cette page rassemble les deux premières, avec des exemples courts.
Tu y trouveras des astuces 💡, des pièges ⚠️ et un peu d'humour 😄.
🎯 Comment utiliser cette page
- Lis chaque partie une fois, puis fais les exercices en cachant les corrections.
- Retiens surtout les phrases-types : elles reviennent dans les corrections de tous les chapitres.
- Reviens ici dès qu'un mot te bloque dans un énoncé (« réciproque », « contre-exemple », « par l'absurde »...).
1. Le vocabulaire des ensembles
- : appartient à l'ensemble . : il n'y appartient pas.
- : est inclus dans (tout élément de est dans ).
- : l'intersection (les éléments communs). : la réunion (les éléments d'au moins un des deux).
- ou : le complémentaire de dans l'ensemble de référence (ce qui est dans mais pas dans ).
- : l'ensemble vide. : les éléments de qui ne sont pas dans .
- : le cardinal de , c'est-à-dire son nombre d'éléments (pour un ensemble fini).
- : le produit cartésien, l'ensemble des couples avec et .
Les ensembles de nombres.
| Notation | Ensemble | Exemples |
|---|---|---|
| entiers naturels | ||
| entiers relatifs | ||
| nombres décimaux | ||
| nombres rationnels (quotients d'entiers) | ||
| nombres réels |
Ces ensembles sont emboîtés : .
Exemple (intervalles). et . Alors et .
Exemple (complémentaire). Dans , le complémentaire de est .
Exemple (cardinal). a pour cardinal , et .
Exemple (produit cartésien). : couples, et .
⚠️ Pièges :
- Un élément appartient () ; un ensemble est inclus (). On écrit et .
- Le couple est ordonné : . L'ensemble ne l'est pas.
- Un crochet ouvert ne contient pas la borne : ne contient pas .
😄 Confondre et , c'est dire « le chat est inclus dans la maison » : on comprend, mais le prof grince.
2. Connecteurs, implication, réciproque, contraposée, équivalence
- « et » : la proposition « et » est vraie quand et sont vraies toutes les deux. Elle correspond à l'intersection .
- « ou » : la proposition « ou » est vraie quand l'une au moins est vraie (le « ou » est inclusif : les deux peuvent être vraies). Elle correspond à la réunion .
Exemples. « et » signifie . « ou » signifie . Pour , la proposition « ou est pair » est vraie, et elle est vraie aussi pour (les deux sont vraies).
- Implication : « si , alors ». est une condition suffisante pour ; est une condition nécessaire pour .
- Réciproque de : . Elle n'a aucune raison d'être vraie en même temps.
- Contraposée de : . Elle est toujours équivalente à l'implication de départ.
- Équivalence : les deux implications sont vraies ( et ). On dit aussi « si et seulement si ».
Exemple. « Si , alors » est vraie. Sa réciproque « si , alors » est fausse : convient aussi.
Exemple. « Si est un multiple de , alors est pair » est vraie. Sa contraposée « si est impair, alors n'est pas un multiple de » est vraie aussi.
Utiliser l'équivalence dans un raisonnement. Quand on résout une équation, chaque ligne doit être équivalente à la précédente : on ne perd ni n'ajoute de solution.
Attention : élever au carré donne seulement une implication. De , on tire , mais n'entraîne pas : convient aussi.
Le statut des égalités et des lettres.
- Une identité est une égalité vraie pour toutes les valeurs de la lettre : est vraie pour tout réel .
- Une équation est une égalité que l'on cherche à rendre vraie : n'est vraie que pour et .
- Une variable prend des valeurs quelconques d'un ensemble (dans , est la variable). Une inconnue est la valeur que l'on cherche. Un paramètre est une lettre fixée dans un problème, mais qui peut changer d'un problème à l'autre : dans , est l'inconnue et un paramètre.
Quantificateurs, en français. On dit « pour tout » et « il existe ». Les symboles et existent, mais ils ne sont pas exigibles : tu peux (et tu dois) écrire en français.
Négation d'une proposition quantifiée. Pour nier une phrase, on change le quantificateur et on nie la propriété :
- la négation de « pour tout réel , » est « il existe un réel tel que » ;
- la négation de « il existe un entier tel que » est « pour tout entier , ».
Quantifications implicites. Dans une phrase conditionnelle, le « pour tout » est souvent caché : « si , alors » signifie « pour tout réel , si alors ». Pour la nier, il faut le rétablir : « il existe un réel tel que ».
Contre-exemple. Pour réfuter une phrase commençant par « pour tout », un seul exemple suffit. « Tous les nombres premiers sont impairs » est fausse : est premier et pair.
Exemple. « Pour tout réel , » est fausse : pour , .
💡 Astuce. Devant une affirmation « pour tout », teste d'abord , et . Un contre-exemple se cache souvent là.
⚠️ Pièges :
- Vérifier sur des exemples ne prouve rien : cela ne fait que rendre la phrase plausible.
- La négation de « tous » n'est pas « aucun » : c'est « au moins un ne vérifie pas ».
- Ne confonds pas réciproque et contraposée. La contraposée a toujours la même valeur de vérité que l'implication.
😄 « Tous les cygnes que j'ai vus sont blancs » ne prouve pas que tous les cygnes sont blancs. Il suffit d'un cygne noir.
3. Raisonnements : disjonction des cas, contraposée, absurde
La disjonction des cas. On sépare toutes les situations possibles et on traite chacune.
Exemple. Montrer que, pour tout entier , est pair.
Si est pair, contient le facteur pair : le produit est pair.
Si est impair, est pair : le produit est pair.
Dans les deux cas, est pair.
Le raisonnement par contraposée. Pour prouver , on prouve .
Exemple. Montrer que si est pair, alors est pair.
Contraposée : si est impair, alors est impair. Avec : , qui est impair.
Le raisonnement par l'absurde. Pour prouver , on suppose non et on aboutit à une contradiction.
Exemple. Montrer que est irrationnel.
Supposons avec et entiers, la fraction étant irréductible.
Alors , donc est pair, donc est pair (contraposée ci-dessus) : .
Alors , soit , donc est pair.
et sont tous les deux pairs : la fraction n'est pas irréductible. C'est absurde. Donc est irrationnel.
💡 Astuce. Dans un énoncé, les mots « montrer qu'il n'existe pas » ou « montrer que... est impossible » appellent presque toujours un raisonnement par l'absurde.
4. Notion de liste (algorithmique et programmation)
En Première, la seule notion nouvelle est celle de liste. Le reste consolide ce que tu connais : variables, instructions conditionnelles, boucles, fonctions.
- Affectation. En langage naturel, on écrit (« prend la valeur ») et (« prend la valeur »). En Python :
x = 3etn = n + 1. - Types de variables. Un entier (
int), un nombre à virgule (float), un texte (str), un booléen (bool,TrueouFalse), une liste (list).3et3.0n'ont pas le même type, ettype(x)donne le type dex. - Programmation modulaire. On découpe une tâche en fonctions simples, que l'on réutilise : une fonction
defreçoit des arguments et renvoie un résultat avecreturn.
def est_pair(n):
return n % 2 == 0
print(est_pair(6), est_pair(7)) # affiche True False
Une liste range plusieurs valeurs entre crochets. Les éléments sont numérotés à partir de 0.
L = [3, 1, 4, 1, 5]
print(L[0]) # affiche 3 (premier élément)
print(L[-1]) # affiche 5 (dernier élément)
print(len(L)) # affiche 5 (nombre d'éléments)
L[1] = 7 # modifie le deuxième élément
print(L) # affiche [3, 7, 4, 1, 5]
Générer une liste : en extension, par ajouts successifs, en compréhension.
A = [2, 4, 6] # en extension
B = [] # par ajouts successifs
for k in range(1, 4):
B.append(2 * k) # B vaut [2, 4, 6]
C = [2 * k for k in range(1, 4)] # en compréhension : [2, 4, 6]
Ajouter, supprimer, extraire.
L = [3, 1, 4]
L.append(9) # ajoute à la fin : [3, 1, 4, 9]
L.remove(1) # supprime la première valeur 1 : [3, 4, 9]
L.pop(0) # supprime l'élément d'indice 0 : [4, 9]
L.insert(1, 8) # insère 8 à l'indice 1 : [4, 8, 9]
print(L[0:2]) # affiche [4, 8] (indices 0 et 1, pas le 2)
print(sum(L), max(L), min(L)) # affiche 21 9 4
Parcourir une liste. On peut prendre les éléments un par un (itérer sur les éléments), ou passer par les indices.
L = [3, 1, 4]
for x in L:
print(x) # affiche 3, puis 1, puis 4
for i in range(len(L)):
print(i, L[i]) # affiche 0 3, puis 1 1, puis 2 4
Liste en compréhension et ensemble. Une liste en compréhension se lit comme un ensemble défini par une condition. La liste [k for k in range(1, 11) if k % 3 == 0] correspond à l'ensemble .
carres = [k ** 2 for k in range(1, 6)]
print(carres) # affiche [1, 4, 9, 16, 25]
pairs = [k for k in range(10) if k % 2 == 0]
print(pairs) # affiche [0, 2, 4, 6, 8]
M = [k for k in range(1, 31) if k % 3 == 0 and k % 5 == 0]
print(M, len(M)) # affiche [15, 30] 2 (condition avec et)
La condition d'une liste en compréhension utilise les connecteurs de la partie 2 : and pour « et », or pour « ou » (inclusif), not pour la négation.
Un exemple de suite. On range les termes de , dans une liste :
u = [2]
for n in range(5):
u.append(3 * u[-1] - 1)
print(u) # affiche [2, 5, 14, 41, 122, 365]
⚠️ Pièges :
- Le premier indice est : une liste de éléments va de
L[0]àL[4]. L[0:2]s'arrête avant l'indice .range(1, 6)donne : le dernier nombre n'est pas atteint.- Une liste se modifie en place :
L.append(9)ne renvoie rien, il faut écrireL.append(9)et nonL = L.append(9).
😄 Compter à partir de est la seule raison pour laquelle un programmeur ne rate pas son bus : il arrive toujours en retard d'un cran.
Histoire des mathématiques. De nombreux textes témoignent d'une préoccupation algorithmique au long de l'Histoire. Quand un texte historique décrit une méthode de calcul, on peut la transformer en algorithme, voire en programme, ou faire l'inverse : ce changement de registre donne du sens au formalisme. Le programme cite par exemple le calcul de la racine carrée chez Héron d'Alexandrie (voir l'exercice 8).
5. Huit exercices
Exercice 1 (★) : intervalles et ensembles
Soient et .
1. Déterminer et .
2. Déterminer le complémentaire de dans .
✏️ Correction de l'exercice 1
Question 1
: les nombres à la fois dans et dans : ils sont supérieurs à (strictement) et inférieurs ou égaux à .
: de (inclus) jusqu'à (exclu), sans trou.
✅ et .
Question 2
✅ .
Exercice 2 (★★) : réciproque, contraposée, négation
On considère l'implication « si , alors ».
1. Énoncer sa réciproque. Est-elle vraie ?
2. Énoncer sa contraposée. Est-elle vraie ?
3. Écrire, en français, la négation de « pour tout réel , » puis dire si la phrase de départ est vraie.
✏️ Correction de l'exercice 2
Question 1
Réciproque : « si , alors ».
✅ Elle est fausse : donne mais .
Question 2
Contraposée : « si , alors ».
✅ Elle est vraie, comme l'implication de départ : si , alors , donc .
Question 3
Négation : « il existe un réel tel que ».
✅ Cette négation est vraie ( : ), donc la phrase de départ est fausse.
Exercice 3 (★★) : disjonction de cas et absurde
1. Montrer que, pour tout entier , est pair.
2. Montrer par l'absurde qu'il n'existe pas d'entier tel que soit divisible par .
✏️ Correction de l'exercice 3
Question 1
. Si est pair, le produit est pair. Si est impair, est pair, donc le produit est pair.
✅ Dans tous les cas, est pair.
Question 2
Supposons qu'il existe avec . Si est pair, et est impair : il n'est pas multiple de .
Si est impair, et : le reste dans la division par est .
✅ Dans les deux cas, on a une contradiction : aucun entier n'a un divisible par .
Exercice 4 (★★) : listes et suites
On définit et .
1. Écrire un script Python qui range dans une liste.
2. Quelle liste obtient-on ? En déduire .
✏️ Correction de l'exercice 4
Question 1
On part de la liste [1] puis on ajoute termes avec append, chacun calculé à partir du dernier élément u[-1].
u = [1]
for n in range(5):
u.append(2 * u[-1] + 3)
print(u)
✅ range(5) fait cinq tours : le script range bien .
Question 2
, , , , .
✅ Le script affiche [1, 5, 13, 29, 61, 125], donc .
Exercice 5 (★) : connecteurs, identités, quantifications implicites
1. Traduire avec « et » ou « ou » : ; puis .
2. Les égalités suivantes sont-elles des identités ou des équations ? (a) ; (b) ; (c) .
3. Dans , quel est le rôle de ? de ? Résoudre cette équation pour .
4. Rétablir la quantification cachée dans « si , alors », puis écrire la négation de cette phrase. Cette négation est-elle vraie ?
✏️ Correction de l'exercice 5
Question 1
✅ s'écrit « et » ; s'écrit « ou ».
Question 2
(a) est vraie pour tout réel : c'est une identité. (b) n'est vraie que pour et : c'est une équation. (c) est vraie pour tout : c'est une identité.
Question 3
est l'inconnue et un paramètre. Pour : .
✅ La solution est .
Question 4
La phrase signifie « pour tout réel , si alors ». Sa négation est « il existe un réel tel que ».
✅ Cette négation est fausse : si , alors . La phrase de départ est donc vraie.
Exercice 6 (★★) : résoudre par équivalences
1. Résoudre en écrivant des équivalences.
2. Résoudre en justifiant chaque équivalence.
3. On considère l'équation . Montrer que , résoudre , puis conclure : l'implication précédente est-elle une équivalence ?
✏️ Correction de l'exercice 6
Question 1
✅ .
Question 2
Un produit est nul si et seulement si l'un de ses facteurs est nul :
✅ .
Question 3
Si , en élevant au carré on obtient : c'est une implication.
ou .
Vérification : pour , ✓ ; pour , ✗.
✅ Seule la solution convient : . L'implication n'est pas une équivalence : élever au carré peut ajouter des solutions.
Exercice 7 (★★) : listes, ensembles et cardinaux
On note l'ensemble des multiples de compris entre et , et celui des multiples de compris entre et .
1. Écrire en Python la liste
Aen compréhension. Quel est ?2. Déterminer et à la main, puis donner leurs cardinaux.
3. Écrire en compréhension la liste de , puis celle de (avec « ou »).
4. Pour la liste
Ude , quelles instructions suppriment15puis ajoutent33à la fin ? Que vautlen(U)ensuite ?
✏️ Correction de l'exercice 7
Question 1
A = [k for k in range(1, 31) if k % 3 == 0]
On obtient : éléments.
✅ .
Question 2
( éléments). Les éléments communs sont les multiples de :
✅ et (on retrouve ).
Question 3
I = [k for k in range(1, 31) if k % 3 == 0 and k % 5 == 0] # [15, 30]
U = [k for k in range(1, 31) if k % 3 == 0 or k % 5 == 0] # 14 éléments
Question 4
U.remove(15)
U.append(33)
✅ On enlève un élément puis on en ajoute un : len(U) vaut encore .
Exercice 8 (★★) : un algorithme de calcul de racine carrée
Pour approcher , on utilise la méthode attribuée à Héron d'Alexandrie : et, pour tout , .
1. Écrire cet algorithme en langage naturel, avec le symbole , pour calculer .
2. Écrire un script Python qui range dans une liste.
3. Calculer , , sous forme de fractions. Vérifier que approche à moins de .
✏️ Correction de l'exercice 8
Question 1
- Pour allant de à :
- Afficher
Question 2
u = [1]
for n in range(3):
u.append((u[-1] + 2 / u[-1]) / 2)
print(u)
Question 3
et : l'écart est d'environ .
✅ : trois étapes suffisent pour une très bonne approximation.
🎯 À retenir
- Ensembles : pour un élément, pour un ensemble ; pour « et », pour « ou » (inclusif) ; pour le nombre d'éléments.
- Implication : la contraposée a toujours la même valeur de vérité ; la réciproque non. Une résolution se fait par équivalences.
- Pour réfuter un « pour tout » : un seul contre-exemple.
- Pour nier : « pour tout » devient « il existe » (et inversement), et on nie la propriété. Pense aux « pour tout » cachés.
- Python : indices à partir de ,
append,remove, parcours avecfor, liste en compréhension (condition = logique), fonctions avecdef.
Un doute sur ce chapitre ? On en parle ensemble, sans engagement.
Réserver un appel découverte