Jusqu'ici, tes programmes exécutent toujours les mêmes lignes, dans le même ordre. Dans cette partie, ils vont choisir : faire une chose ou une autre selon une condition. À la fin, tu auras complété ton convertisseur GPS avec le nord, le sud, l'est et l'ouest.
CoursComparer
Une comparaison est une question dont la réponse est True (vrai) ou False (faux).
Écriture
Signification
a == b
a est égal à b
a != b
a est différent de b
a < ba <= b
a est strictement inférieur à b ; inférieur ou égal à b
a > ba >= b
a est strictement supérieur à b ; supérieur ou égal à b
a = 5range la valeur 5 dans la variable a. a == 5teste si a vaut 5.
Pour tester une égalité, il faut toujours deux signes égal.
Coursif, else
parite.py
n = int(input("Un entier : "))
if n % 2 == 0:
print(n, "est pair")
else:
print(n, "est impair")
print("Fin du programme")
Après if et après else, on met des deux-points:.
Les lignes qui dépendent de la condition sont décalées vers la droite (indentation, 4 espaces ou une tabulation).
La dernière ligne n'est pas décalée : elle est exécutée dans tous les cas.
À retenir
if condition : exécute son bloc seulement si la condition est vraie.
else : exécute son bloc dans tous les autres cas.
CoursPlus de deux cas : elif
eau.py
temperature = float(input("Température de l'eau en °C : "))
if temperature <= 0:
print("Glace")
elif temperature < 100:
print("Eau liquide")
else:
print("Vapeur")
Python teste les conditions dans l'ordre, s'arrête à la première qui est vraie, et ignore les suivantes.
Vigilance : l'ordre des conditions compte
Avec temperature = -5, la première condition est vraie : on affiche « Glace » et on ne teste pas la suite.
Si on avait écrit d'abord if temperature < 100, « Eau liquide » s'afficherait pour -5 °C !
CoursCombiner : and, or, not
Mot
Sens
Exemple
and
les deux conditions sont vraies
n % 3 == 0 and n % 5 == 0
or
au moins une condition est vraie
lettre == "S" or lettre == "O"
not
inverse la condition
not (n > 10)
Un if peut aussi être placé dans un autre if : les lignes du bloc intérieur sont décalées une deuxième fois.
tarif.py
age = int(input("Ton âge : "))
if age >= 11and age <= 15:
print("Tarif collégien")
if age == 15:
print("Plus qu'un an avant le lycée !")
CoursUn peu de hasard
de.py
from random import *
de = randint(1, 6) # entier au hasard entre 1 et 6 (inclus)print("Le dé donne", de)
randint(a, b) renvoie un entier tiré au hasard entre a et b, bornes comprises. Chaque exécution peut donner un résultat différent.
ExercicesDécisions à prendre
EX 39Je m'entraîne🌶️prise en main
Exercice 39 — Vrai ou faux ?
Sans utiliser l'ordinateur, prévois le résultat (True ou False) de chaque ligne :
Recopie parite.py, teste-le avec plusieurs entiers, puis modifie-le pour qu'il dise si l'entier saisi est un multiple de 7 ou n'en est pas un.
Indice
Un entier est multiple de 7 quand le reste de sa division par 7 est nul.
💾 NOM_Prenom_ex40.py
EX 41Je m'entraîne🌶️🌶️application
Exercice 41 — Multiple de 3, de 5, des deux ?
Écris un programme qui demande un entier et affiche :
multiple de 3 et de 5 si l'entier est multiple des deux ;
multiple de 3 s'il l'est de 3 seulement ;
multiple de 5 s'il l'est de 5 seulement ;
ni de 3 ni de 5 sinon.
Teste avec 30, 9, 10 et 7.
Indice 1
Commence par le cas le plus précis : celui où les deux conditions sont vraies.
Indice 2
Utilise if, puis deux elif, puis else.
💾 NOM_Prenom_ex41.py
EX 42Je m'entraîne🌶️🌶️application
Exercice 42 — La mention au bac
Écris un programme qui demande une note sur 20 (éventuellement décimale) et affiche le résultat d'un candidat au baccalauréat :
Note
Résultat
16 ou plus
Mention très bien
de 14 (inclus) à 16 (exclu)
Mention bien
de 12 (inclus) à 14 (exclu)
Mention assez bien
de 10 (inclus) à 12 (exclu)
Admis sans mention
moins de 10
Non admis
Indice 1
Teste les notes de la plus grande à la plus petite : elif note >= 14: suffit pour la deuxième ligne, car si la note était au moins 16, on serait déjà sorti au premier if.
Indice 2
N'oublie pas float pour lire la note.
💾 NOM_Prenom_ex42.py
EX 43Je m'entraîne🌶️🌶️🌶️plusieurs étapes
Exercice 43 — Ce triangle existe-t-il ?
On donne trois longueurs \(a\), \(b\) et \(c\). Un triangle de côtés \(a\), \(b\), \(c\) existe seulement si chaque longueur est strictement inférieure à la somme des deux autres.
Écris un programme qui demande trois entiers et affiche si le triangle existe.
S'il existe, ajoute un test qui affiche s'il est rectangle (réciproque du théorème de Pythagore : le carré du plus grand côté est égal à la somme des carrés des deux autres).
Teste avec (3, 4, 5), (5, 6, 7), (2, 3, 6) et (1, 2, 3).
Indice 1
Trois conditions reliées par and : a < b + c, b < a + c, c < a + b.
Indice 2
Le plus grand côté n'est pas connu à l'avance : teste les trois possibilités reliées par or.
Indice 3
Le test « rectangle » se place dans le bloc du if « le triangle existe » : un if dans un if.
💾 NOM_Prenom_ex43.py
EX 44Je m'entraîne🌶️🌶️🌶️plusieurs étapes
Exercice 44 — Résoudre ax + b = 0
Écris un programme qui demande deux nombres \(a\) et \(b\) et résout l'équation \(ax + b = 0\) en distinguant trois cas.
Teste avec (2 ; −6), (0 ; 5) et (0 ; 0).
Indice 1
Si \(a \neq 0\), la solution est \(x = -\dfrac{b}{a}\).
Indice 2
Si \(a = 0\), l'équation devient \(0 \times x + b = 0\), c'est-à-dire \(b = 0\) : que peut-on dire selon la valeur de \(b\) ?
💾 NOM_Prenom_ex44.py
EX 45Je m'entraîne🌶️🌶️🌶️plusieurs étapes
Exercice 45 — Année bissextile
Une année est bissextile si elle est divisible par 4 sauf si elle est divisible par 100, à moins qu'elle ne soit divisible par 400.
Écris un programme qui demande une année et dit si elle est bissextile.
Teste avec 2024 (oui), 1900 (non), 2000 (oui) et 2026 (non).
Indice 1
Deux situations donnent une année bissextile : « divisible par 4 et non divisible par 100 », ou « divisible par 400 ».
Indice 2
Relie-les par or, et mets des parenthèses pour que la lecture soit claire.
💾 NOM_Prenom_ex45.py
EX 46Je m'entraîne🌶️🌶️application
Exercice 46 — Pile ou face, dé à 20 faces
Écris un programme qui simule un lancer de pièce : il tire randint(0, 1) et affiche Pile ou Face.
Écris un programme qui simule un dé à 20 faces de jeu de rôle : « réussite critique » pour 20, « échec critique » pour 1, « réussite » à partir de 10, « échec » sinon. Le programme affiche aussi la valeur du dé.
Exécute chaque programme plusieurs fois.
Indice 1
N'oublie pas from random import * en première ligne.
Indice 2
Pour le dé, teste d'abord les cas particuliers 20 et 1.
💾 NOM_Prenom_ex46.py
EX 47Je m'entraîne🌶️🌶️🌶️plusieurs étapes
Exercice 47 — Le convertisseur avec N, S, E, O
Dans la partie 3, le convertisseur DMS vers DD ne fonctionnait que pour le nord et l'est. En DD, les latitudes sud et les longitudes ouest sont négatives.
Complète ton programme de l'exercice 31 : après les degrés, minutes et secondes, il demande la lettre N, S, E ou O, puis affiche l'angle en DD, arrondi à 6 chiffres, avec le bon signe.
Test : Bordeaux, longitude 0° 34′ 44″ O, doit donner −0.578889 ; sa latitude 44° 50′ 14″ N doit donner 44.837222.
Indice 1
Calcule d'abord dd positif comme avant.
Indice 2
Change le signe si la lettre est "S"ou"O" : dd = -dd.
💾 NOM_Prenom_ex47.py
EX 48Je m'entraîne🌶️🌶️🌶️plusieurs étapes
Exercice 48 — Et dans l'autre sens
Écris le programme qui convertit un angle signé de DD vers DMS et affiche la bonne lettre.
Il demande si c'est une latitude ou une longitude, puis l'angle en DD (positif ou négatif).
Pour une latitude, la lettre est N si l'angle est positif ou nul, S sinon ; pour une longitude, E ou O.
Il convertit la valeur absolue de l'angle en DMS (voir l'exercice 32) et l'affiche avec la lettre.
Tests : longitude −0.578889 → 0° 34' 44.0" O ; latitude −33.8688 (Sydney) → 33° 52' 7.7" S.
Indice 1
abs(x) donne la valeur absolue de x : abs(-33.8688) vaut 33.8688.
Indice 2
Le choix de la lettre demande un if dans un if, ou quatre cas avec and.
💾 NOM_Prenom_ex48.py
EX 49Défi🌶️🌶️🌶️🌶️défi
Exercice 49 — Pierre, feuille, ciseaux
Programme le jeu contre l'ordinateur. Le joueur tape 0 (pierre), 1 (feuille) ou 2 (ciseaux) ; l'ordinateur tire un nombre au hasard avec randint(0, 2).
Le programme affiche les deux choix puis le résultat : égalité, gagné ou perdu. Rappel : la feuille bat la pierre, les ciseaux battent la feuille, la pierre bat les ciseaux.
Indice 1
Écris d'abord les trois cas où le joueur gagne : (feuille contre pierre), (ciseaux contre feuille), (pierre contre ciseaux).
Indice 2
Relie les trois cas par or, et chaque cas est formé de deux conditions reliées par and.
💾 NOM_Prenom_ex49.py
À retenirSynthèse
Ce que je sais faire
Écrire une condition avec ==, !=, <, <=, >, >=, et la combiner avec and, or, not.
Choisir entre plusieurs cas avec if, elif, else, en soignant les : et l'indentation.
Tirer un entier au hasard avec randint.
Gérer les signes des coordonnées GPS avec N, S, E, O.