Chapitre 2 Structures Conditionnelles
2.1 Activité 1: Expression booléenne
- Une variable booléenne contient soit la valeur
True
soit la valeurFalse
. - Une expression booléenne contient au moins un opérateur booléen sa valeur est vraie ou fausse.
- Relever dans ce programme les affectations et les expressions booléennes.
= True
majeur = 18
age == 18
age < 18
age != 12
age == True) or (age == 18)
(majeur = 16
age == True) and (age >= 18)
(majeur not majeur
!= 18 age
- Justifier la valeur de chaque expression booléenne.
- En modifiant les valeurs de
a
etb
écrire la table de vérité de l’opérateur booléenor
= True
a = False
b or b a
- Complète le programme suivant afin que les expressions booléennes soient vraies:
= 3
a = False
b = 5
c or b
(a ... c) not ( a ... 3)
and ( a == ...) (... b)
- L’opérateur booléen
or
est un ou inclusif. Dans l’expressiona or b
si a et b sont vraies alors l’expression est aussi vraie. On veut écrire une expression booléenne qui se comporte comme un ou exclusif c’est à dire en valant faux si a et b sont vraies. Par exemple: dans l’expression “fromage ou déssert ?” on ne valide pas le choix fromage ET déssert. Compléter le code ci-dessous.
= False
fromage = False
dessert # Expression booléeenne à écrire
- A l’aide de votre programme écrire la table de vérité de cette opérateur OU-Exclusif
2.2 Activité 2: Si … Alors
L’instruction IF permet d’exécuter un bloc d’insctrtions à la condition qu’une expression booléenne possède la valeur vrai. Par exemple:
= True
expression_1
if expression_1 :
print("Bloc 1")
= False
expression_1
print("Bloc 2")
if expression_1 :
print("Bloc 3")
print("FIN")
- Recopie et test le programme ci-dessus.
- Explique et justifie ligne à ligne son exécution.
- Modifie le code suivant afin que le programme affiche “Accès autorisé” si l’age est supérieur ou égal à 18.
= 15
age if .... :
print("Accès autorisé")
- Corriger les erreurs dans le programme suivant:
= True
admin = 21
age if (admin = True) and (age > 18)
print("Connecté en tant qu' ADMIN !")
- Un hôtel loue des chambres avec un tarif intéressant si on arrive pas trop tard. Plus on arrive tôt et moins on paye.
- Le prix de la chambre est de 10 pièces à midi, et augmente de 5 pièces chaque heure après midi. Il est donc de 15 pièces à 13h, etc. Il ne peut cependant pas dépasser 53 pièces.
- Dans votre programme, utilisez une variable nommée
heure
qui contient un entier représentant l’heure d’arrivée.heure
vaut 0 si on arrive à midi, 1 si on arrive à 1h de l’après-midi, etc, 12 si on arrive à minuit. - Votre programme devra afficher le prix à payer correspondant à l’heure d’arrivée.
2.3 Activité 3: if.. elif..else
- Saisir et commenter en détail le programme suivant:
= 11
note if note >=10:
print('Bonne note')
else:
print('Mauvaise note')
- Modifier le programme pour qu’il affiche “Mauvaise note.”
- Corriger l’erreur dans le programme suivant:
= 12
a if a >= 18:
print('majeur')
else a<18:
print('mineur')
- Compléter le programme suivant attribue une mention au bac.
- Inférieur à 10: Recalé
- Entre 10 et 12: Passable
- Entre 12 et 14: Assez-bien
- Entre 14 et 16: Bien
- 16 et plus: Très bien
= 15
note if note >= 16:
print('Très bien')
elif note >= 14:
print('Bien')
elif ... :
print('Assez-bien')
elif note >= 10:
....else:
....
- Modifier le programme précédent en inversant l’odre des deux premiers tests conditionnels. Que se passe-t-il ? Justifie.
- Ecrire un programme qui affiche “pair” si la valeur de la variable
n
est paire et “impair” dans les autres cas. Pour savoir si un nombre est pair, on utilise le fait que le reste de la division par 2 de ce nombre vaut 0. On utilisera donc l’opérateur%
.
2.4 Activité 4: Combinaisons de if, elif, else
- Prédire et expliquer la valeur de
b
après exécution du programme suivant:
=2
a=0
bif a<0:
=1
belif a>0 and a<5:
=2
belse:
=3 b
- Commenter l’exécution du programme suivant:
= -3
x if x < 0:
if x % 2 == 0:
print('pair et négatif')
else:
print('impair et négatif')
else:
print("pair et c'est tout ce qui m'intéresse")
- Modifier le programme afin qu’il affiche pair et positif ou impair et positif si c’est le cas.
- Le programme suivant est buggé. On souhaite que lorsque l’utilisateur a plus de 18 ans et possède son code et le permis le programme affiche “vous pouvez conduire.” Modifiez légèrement le programme afin de fixer cette erreur.
= 19
age = True
code = True
permis
if age >= 14:
print('vous pouvez apprendre à conduire un scooter')
elif code == True and age >=18:
if permis == True:
print('vous pouvez conduire une voiture')
else:
print('vous pouvez apprendre à conduire une voiture')
## vous pouvez apprendre à conduire un scooter
Ecrire un programme qui affiche la phrase “il va faire très froid / froid / frais / bon / un peu chaud / chaud / très chaud.” selon la valeur de la variable
t
représentant la température maximale prévue. Vous choisirez les seuils entre chaque niveau de température.Une année est bissextile si elle est divisible par 4. Cependant les siècles ne sont pas bissextiles, sauf les multiples de 400. Ecrire un programme qui affiche si une année est bisextile. Vérifiez que 2100 n’est pas bissextile contrairement à 2012.
Plus loin: Ecrire une fonction qui reçoit une année et qui renvoie l’année si elle est bissextile et la chaine " " si elle n’est pas bissextile. En utilisant cette fonction écrire un script qui affiche toutes les années bissextiles entre 2000 et 2104.
2.5 Corrigés des activités
2.5.1 Activité 1
- Relever dans ce programme les affectations et les expressions booléennes.
= True #affectation
majeur = 18 # affectation
age == 18 #exp booléenne age
## True
< 18 #exp booléenne age
## False
!= 12 #exp booléenne age
## True
== True) or (age == 18) #exp booléenne (majeur
## True
= 16 #affectation
age == True) and (age >= 18) #exp booléenne (majeur
## False
not majeur #exp booléenne
## False
!= 18 #exp booléenne age
## True
- Justifier la valeur de chaque expression booléenne.
(majeur == True) or (age == 18)
on décompose majeur == True est Vrai car majeur est vrai. idem pour age qui vaut effectivement 18. L’expression revient à True OR True. Au moins une des deux propositions est vraies dont l’expression est vrai.(majeur == True) and (age >= 18)
majeur est vrai donc majeur == True est vraie. age vaut 16 (ligne précédente) donc il n’est pas supérieur ou égal à 18. L’expression se ramène à vrai AND faux ce qui a pour valeur faux car pour que l’expression soit vraie il faut les deux vrai AND vrai.not majeur
renvoie la négation de majeur. La négation de True, c’est False.age != 18
est vrai si la valeur de age n’est pas 18. Ce qui ici est vrai car age vaut 16.
- En modifiant les valeurs de
a
etb
écrire la table de vérité de l’opérateur booléenor
= True
a = False
b or b a
## True
- Complète le programme suivant afin que les expressions booléennes soient vraies:
= 3
a = False
b = 5
c < c) or b (a
## True
not ( a != 3)
## True
not b) and ( a == 3) (
## True
- L’opérateur booléen
or
est un ou inclusif. Dans l’expressiona or b
si a et b sont vraies alors l’expression est aussi vraie. On veut écrire une expression booléenne qui se comporte comme un ou exclusif c’est à dire en valant faux si a et b sont vraies. Par exemple: dans l’expression “fromage ou déssert ?” on ne valide pas le choix fromage ET déssert. Compléter le code ci-dessous.
= False
fromage = False
dessert # Expression booléeenne à écrire
or dessert) and not(fromage and dessert) (fromage
## False
- A l’aide de votre programme écrire la table de vérité de cette opérateur OU-Exclusif
2.5.2 Activité 2
- /
= True
expression_1
if expression_1 : #si expression_1 est vrai alors
print("Bloc 1") #affiche Bloc 1
= False #expression_1 prend la valeur Faux expression_1
## Bloc 1
print("Bloc 2") #affiche Bloc 2
## Bloc 2
if expression_1 : #Si application est vrai.. mais ici expression_1 vaut False donc on saute le bloc
print("Bloc 3") #Pas exécuter car expression_1 est False
print("FIN") #Affiche Fin
## FIN
= 15
age if age >= 18 :
print("Accès autorisé")
= True
admin = 21
age if (admin == True) and (age > 18):
print("Connecté en tant qu' ADMIN !")
## Connecté en tant qu' ADMIN !
= 2
heure = 10 + 5 * heure
prix if prix > 53:
= 53
prix print(prix)
## 20
2.5.3 Activité 3
= 11
note if note >=10: #Si note >= 10 Alors Affiche "bonne note"
print('Bonne note')
else: #Sinon Alors Affiche "Mauvaise Note"
print('Mauvaise note')
## Bonne note
- Modifier le programme pour qu’il affiche “Mauvaise note.”
= 9
note if note >=10: #Si note >= 10 Alors Affiche "bonne note"
print('Bonne note')
else: #Sinon Alors Affiche "Mauvaise Note"
print('Mauvaise note')
## Mauvaise note
- Corriger l’erreur dans le programme suivant:
= 12
a if a >= 18:
print('majeur')
else : # Pas de condition après else
print('mineur')
## mineur
- Compléter le programme suivant attribue une mention au bac.
- Inférieur à 10: Recalé
- Entre 10 et 12: Passable
- Entre 12 et 14: Assez-bien
- Entre 14 et 16: Bien
- 16 et plus: Très bien
= 17
note if note >= 16:
print('Très bien')
elif note >= 14:
print('Bien')
elif note >= 12 :
print('Assez-bien')
elif note >= 10:
print('Passable')
else:
print('Recalé')
- Modifier le programme précédent en inversant l’ordre des deux premiers tests conditionnels. Que se passe-t-il ? Justifie.
= 17
note if note >= 14:
print('Bien')
elif note >= 16:
print('Très bien')
## Bien
La première condition étant vraie la seconde n’est pas exécutée. C’est pourquoi avec note = 15, le programme affiche “Bien” et non pas “Très Bien” alors que note >=16 est vraie.
6. Ecrire un programme qui affiche “pair” si la valeur de la variable n
est paire et “impaire” dans les autres cas. Pour savoir si un nombre est pair, on utilise le fait que le reste de la division par 2 de ce nombre vaut 0. On utilisera donc l’opérateur %
.
= 13
n if n % 2 == 0:
print(f'{n} est un entier pair')
else:
print(f'{n} est un entier impair')
## 13 est un entier impair
2.5.4 Activité 4
- Prédire et expliquer la valeur de
b
après exécution du programme suivant:
=2
a=0
bif a<0: #condition fausse
=1
belif a>0 and a<5: #condition vraie
=2 # b prend la valeur 2
belse:
=3 b
- Commenter l’exécution du programme suivant:
= -3
x if x < 0: #condition vraie
if x % 2 == 0: #sous condition fausse
print('pair et négatif')
else: #on exécute le bloc qui suit le else
print('impair et négatif')
else: #pas exécuté car if correspondant vrai
print("pair et c'est tout ce qui m'intéresse")
## impair et négatif
- Modifier le programme afin qu’il affiche pair et positif ou impair et positif si c’est le cas.
= 7
x if x < 0:
if x % 2 == 0:
print('pair et négatif')
else:
print('impair et négatif')
else:
if x % 2 == 0:
print('pair et positif')
else:
print('impair et positif')
## impair et positif
- Le programme suivant est buggé. On souhaite que lorsque l’utilisateur a plus de 18 ans et possède son code et le permis le programme affiche “vous pouvez conduire.” Modifiez légèrement le programme afin de fixer cette erreur.
= 19
age = True
code = True
permis
if age >= 14:
print('vous pouvez apprendre à conduire un scooter')
elif code == True and age >=18:
if permis == True:
print('vous pouvez conduire une voiture')
else:
print('vous pouvez apprendre à conduire une voiture')
## vous pouvez apprendre à conduire un scooter
- Ecrire un programme qui affiche la phrase “il va faire très froid / froid / frais / bon / un peu chaud / chaud / très chaud.” selon la valeur de la variable
t
représentant la température maximale prévue. Vous choisirez les seuils entre chaque niveau de température.
= 20
t if t>30:
= "très chaud"
mot elif t>25:
= "chaud"
mot elif t>23:
= "un peu chaud"
mot elif t>=20:
= "bon"
mot elif t>17:
= "frais"
mot elif t>10:
= "froid"
mot else:
= "très froid"
mot print(f"il va faire {mot} ")
## il va faire bon
- Une année est bissextile si elle est divisible par 4. Cependant les siècles ne sont pas bissextiles, sauf les multiples de 400. Ecrire un programme qui affiche si une année est bisextile.
= 2012
a if a % 4 == 0 :
if ((a % 100) == 0) and not(a%400 ==0):
print('année pas bissextile')
else:
print('année bissextile')
else:
print('année pas bissextile')
## année bissextile