TD2. Opérateurs booléens
L'objectif de ce TD est de se familiariser avec les opérateurs logiques calculant une valeur booléenne, c'est-à-dire True
ou False
en Python, et avec la structure de contrôle conditionnelle if
.
Exercice 1 : opérateurs logiques
On considère le programme suivant :
#!/usr/bin/env python3
a = 10
b = 20
c = 30
d = a < b
print("d =", d)
e = b < c and a > b
print("e =", e)
d = d or e
print("d =", d)
f = (not d) or (a + b > c and e)
print("f =", f)
Question 1
Exécuter le programme en notant la valeur des différentes variables au cours de l'exécution.
Exercice 2 : réécritures
On considère le programme suivant :
#!/usr/bin/env python3
...
b = 7
if a == 3:
b = 4
e = a + 1
elif a == 5:
b = 0
e = a - 1
else:
e = 4
Question 1
Comment simplifier ce code ?
Question 2
En sachant que int(False)
vaut 0
et que int(True)
vaut 1
, trouver une expression arithmétique calculant la valeur de b
en fonction de a
.
Question 3
On suppose maintenant que a
est entier compris entre 0
et 6
.
À l'aide d'un tuple de 7 éléments, supprimer toutes les comparaisons pour affecter la bonne valeur à b
.
Exercice 3 : date correcte
Question 1
Écrire la fonction date_correcte(jour, mois, annee)
retournant True
si les trois entiers donnés en argument forment une date correcte et False
sinon. On considère pour cette première question que le mois de février a toujours 28 jours.
Question 2
Prendre en compte les années bissextiles. Une année est bissextile si elle rentre dans l'un des deux cas suivants :
- l'année est divisible par 4 et non divisible par 100 ;
- l'année est divisible par 400.
Par exemple, l'an 2000 était bissextile mais 2100 ne le sera pas.
Exercice 4 : fizzbuzz (pour aller plus loin)
Question 1
Écrire le plus "joliment" possible une fonction fizzbuzz(nombre)
retournant :
"fizz"
sinombre
est un multiple de 3"buzz"
sinombre
est un multiple de 5"fizzbuzz"
sinombre
est un multiple de 3 et de 5str(nombre)
sinon