Skip to content

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 :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#!/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 :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/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" si nombre est un multiple de 3
  • "buzz" si nombre est un multiple de 5
  • "fizzbuzz" si nombre est un multiple de 3 et de 5
  • str(nombre) sinon