Chapitre 2 Structures Conditionnelles
2.1 Activité 1: Expression booléenne
- Une variable booléenne contient soit la valeur
Truesoit 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.
majeur = True
age = 18
age == 18
age < 18
age != 12
(majeur == True) or (age == 18)
age = 16
(majeur == True) and (age >= 18)
not majeur
age != 18- Justifier la valeur de chaque expression booléenne.
- En modifiant les valeurs de
aetbécrire la table de vérité de l’opérateur booléenor
a = True
b = False
a or b- Complète le programme suivant afin que les expressions booléennes soient vraies:
a = 3
b = False
c = 5
(a ... c) or b
not ( a ... 3)
(... b) and ( a == ...) - L’opérateur booléen
orest un ou inclusif. Dans l’expressiona or bsi 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.
fromage = False
dessert = False
# 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:
expression_1 = True
if expression_1 :
print("Bloc 1")
expression_1 = False
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.
age = 15
if .... :
print("Accès autorisé")- Corriger les erreurs dans le programme suivant:
admin = True
age = 21
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
heurequi contient un entier représentant l’heure d’arrivée.heurevaut 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:
note = 11
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:
a = 12
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
note = 15
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
nest 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
baprès exécution du programme suivant:
a=2
b=0
if a<0:
b=1
elif a>0 and a<5:
b=2
else:
b=3- Commenter l’exécution du programme suivant:
x = -3
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.
age = 19
code = True
permis = True
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
trepré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.
majeur = True #affectation
age = 18 # affectation
age == 18 #exp booléenne## True
age < 18 #exp booléenne## False
age != 12 #exp booléenne## True
(majeur == True) or (age == 18) #exp booléenne## True
age = 16 #affectation
(majeur == True) and (age >= 18) #exp booléenne## False
not majeur #exp booléenne## False
age != 18 #exp booléenne## 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 majeurrenvoie la négation de majeur. La négation de True, c’est False.age != 18est vrai si la valeur de age n’est pas 18. Ce qui ici est vrai car age vaut 16.
- En modifiant les valeurs de
aetbécrire la table de vérité de l’opérateur booléenor
a = True
b = False
a or b## True
- Complète le programme suivant afin que les expressions booléennes soient vraies:
a = 3
b = False
c = 5
(a < c) or b## True
not ( a != 3)## True
(not b) and ( a == 3) ## True
- L’opérateur booléen
orest un ou inclusif. Dans l’expressiona or bsi 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.
fromage = False
dessert = False
# Expression booléeenne à écrire
(fromage or dessert) and not(fromage and dessert)## False
- A l’aide de votre programme écrire la table de vérité de cette opérateur OU-Exclusif
2.5.2 Activité 2
- /
expression_1 = True
if expression_1 : #si expression_1 est vrai alors
print("Bloc 1") #affiche Bloc 1
expression_1 = False #expression_1 prend la valeur Faux## 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
age = 15
if age >= 18 :
print("Accès autorisé")admin = True
age = 21
if (admin == True) and (age > 18):
print("Connecté en tant qu' ADMIN !")## Connecté en tant qu' ADMIN !
heure = 2
prix = 10 + 5 * heure
if prix > 53:
prix = 53
print(prix)## 20
2.5.3 Activité 3
note = 11
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.”
note = 9
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:
a = 12
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
note = 17
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.
note = 17
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 %.
n = 13
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
baprès exécution du programme suivant:
a=2
b=0
if a<0: #condition fausse
b=1
elif a>0 and a<5: #condition vraie
b=2 # b prend la valeur 2
else:
b=3- Commenter l’exécution du programme suivant:
x = -3
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.
x = 7
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.
age = 19
code = True
permis = True
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
treprésentant la température maximale prévue. Vous choisirez les seuils entre chaque niveau de température.
t = 20
if t>30:
mot = "très chaud"
elif t>25:
mot = "chaud"
elif t>23:
mot = "un peu chaud"
elif t>=20:
mot = "bon"
elif t>17:
mot = "frais"
elif t>10:
mot = "froid"
else:
mot = "très froid"
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.
a = 2012
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