Les exercices de cette page peuvent (doivent) être réservés à une
seconde lecture.
Exercices utilisant les booléens
Les exercices de cette page peuvent (doivent) être réservés à une
seconde lecture.
On rappelle que les années bissextiles sont les années divisibles par 4, à l'exception de celles qui sont divisibles par 100 sans l'être par 400.
Par exemple :
Écrire une fonction Python,
nommée bissextile()
, qui respecte la spécification
suivante :
Paramètre | un entier naturel n |
---|---|
Valeur renvoyée | True si l'année n est bissextile, False sinon |
def bissextile(n) :
regle = (n%4 == 0)
exception = (n%100 == 0 and n%400 != 0)
return regle and not(exception)
>>> bissextile(1900) False >>> bissextile(2000) True >>> bissextile(2002) False >>> bissextile(2012) True
def reunion1(x):
return ( x > 17 ) or ( x < 7 )
not
et and
au lieu de or
.
reunion3()
qui correspondrait à des
réponses True
pour tous les réels
x
(et uniquement ceux-là) qui ne sont pas dans
l'ensemble $ [ -10; 5 ] \cup ] 7; +\infty [ $.
n_est_pas_dans_union()
qui respecte la
spécification suivante :
Paramètres | trois réels x, a, b |
---|---|
Valeur renvoyée | False si $ x\in ]-\infty; a] \cup [b; +\infty[ $, True sinon. |
Être dans $ ]-\infty ; 7 [ \cup ] 17 ; +\infty[ $, c'est ne pas être dans $ [7 ; 17 ] $.
def reunion1(x):
return not( 7 <= x and x <= 17)
ou encore :
def reunion1(x):
return not( 7 <= x <= 17)
def reunion3(x):
return not( (-10 <= x <= 5) or x > 7 )
Dans cette proposition de solution, on a fait le choix de définir une fonction supplémentaire pour simplifier les instructions et favoriser la réutilisation ultérieure de code :
p>a
, b
, c
désignent trois entiers.
On considère l'algorithme suivant :
A ← a²
B ← b²
C ← c²
test ← la valeur de vérité de ( A+B+C = 2 maximum(A, B, C) )
max()
pré-programmée en
Python.
Lorsque $a^2$ est le plus grand des trois entiers $ a^2, b^2, c^2$,
la variable test
contient la valeur « vrai » si l'on a
$ a^2+b^2+c^2 = 2a^2 $, c'est-à-dire si $ b^2 + c^2 = a^2 $.
Cette variable test
contiendra la valeur « faux » si
$ b^2 + c^2 \neq a^2 $.
test
a la valeur « vrai » lorsqu'un triangle de côtés de
longueurs a
, b
, c
est
rectangle et la valeur « faux » sinon.
Voici un exemple de programme qui n'utilise pas de fonction. Même si cette version est déconseillée par les instructions officielles, nous vous la proposons au cas où un élève rendrait ce type de code.
En demandant une programmation Python « ouverte » (sans préciser si l'on veut utiliser une fonction ou non par exemple), on constate qu'un même algorithme (même très simple) peut donner lieu à des programmes différents. Cela permet de mieux faire saisir la différence entre algorithme et programmation :
On considère la fonction Python suivante :
def mystere(a, b, c) :
return a+b+c == 2*max(a, b, c)
A quoi cette fonction peut-elle servir ? Donner un ou deux exemples.
La fonction renvoie un booléen True
ou False
.
Cette fonction peut servir à vérifier l'alignement de trois points.
Soient $P$, $Q$, $R$ trois points et $a = PQ$, $b = QR$, $c = PR$.
True
si
$ b+c = a $, c'est à dire si $QR+RP = PQ$ et
False
sinon.
True
si et seulement si l'un des trois points est sur le segment d'extrémités
les deux autres, c'est-à-dire si et seulement si les trois points
sont alignés. On n'oubliera pas qu'avec des valeurs de paramètres de type float
, on risque d'avoir une
réponse False
même lorsque, mathématiquement, on s'attend à une égalité.
Quatre points $A$, $B$, $C$, $D$ sont donnés par leurs coordonnées (entières pour éviter les problèmes de représentation des nombres en machine) $x_A$, $y_A$, $x_B$, $y_B$, $x_C$, $y_C$, $x_D$, $y_D$.
Écrire des fonctions renvoyant True
ou False
selon que le quadrilatère $ABCD$ est un parallélogramme, un losange, un carré, etc...
Pour simplifier les tests d'égalité, on se place dans le cas où tous les sommets ont des coordonnées entières.
On voit ici que l'usage des chaînes de documentation peuvent être utiles même dans le cadre du programme de seconde ne faisant intervenir que des fonctions de code très bref. On peut imaginer construire au fur et à mesure de l'année un petit utilitaire avec les élèves comme celui qui commence à se dessiner ci-dessous. Les chaînes de documentation proprement renseignées permettraient dans ce cas une utilisation à long terme (c'est là un de leur rôle !)