if, and, or, not☘
Les conditions utilisées dans un if
sont souvent combinées: on veut
vérifier une condtion A et une condition B, ou vérifier une conditon A ou une condition B,
ou encore vérifier une condtion A et ne pas vérifier une condition B...
C'est à l'aide des mots clefs and
, or
, not
que l'on pourra
ainsi combiner des conditions.
and☘
Exercice☘
Ecrire une fonction prenant en paramètre un entier naturel n
et deux entiers naturels a et b non nuls
et renvoyant True
si n est multiple de a et multiple de b (et renvoyant False
sinon)
Important
La constante Python True
s'écrit avec une majuscule.
Il en va de même avec False
.
and
On utilisera and
:
>>> 18%2 == 0 and 18%9 == 0
True
>>> 18%2 == 0 and 18%10 == 0
False
Le premier test se traduit par:
il est vrai que 18 est multiple commun de 2 et 9.
Le second test se traduit par:
il est faux que 18 est multiple commun de 2 et 10 (autrement dit, 18
n'est pas multiple d'au moins l'un des deux entiers 2, 10)
Solution
def est_multiple_commun(n, a, b):
"""
n -- entier naturel
a -- entier naturel non nul
b -- entier naturel non nul
renvoie True si n est multiple de a et multiple de b, renvoie False sinon.
"""
return n%a == 0 and n%b == 0
Essais:
>>> est_multiple_commun(12, 3, 4)
True
>>> est_multiple_commun(9, 3, 4)
False
Exercice☘
Écrire une fonction prenant en paramètre un entier naturel n et renvoyant en sortie la somme des entiers multiples de 6 et de 8 compris (au sens large) entre 0 à n.
Le principe
Il s'agit d'appliquer le principe d'accumulation déjà utilisé.
code python
def somme_multiples_de_6_et_8(n):
"""
n -- entier naturel
renvoie la somme des entiers naturels multiples de 6 et 8 et
valant au plus n.
"""
somme = 0
for k in range(0, n+1):
if k%6 == 0 and k%8 == 0:
somme = somme + k
return somme
Test:
>>> somme_multiples_de_6_et_8(48)
72
or☘
Exercice☘
Ecrire une fonction prenant en paramètre un entier naturel n
et deux entiers naturels a et b non nuls
et renvoyant True
si n est multiple de a ou si n est multiple de b
(et renvoyant False
sinon)
and
On utilisera or
:
>>> 18%2 == 0 or 18%10 == 0
True
>>> 18%2 == 0 and 18%9 == 0
True
>>> 18%5 == 0 or 18%7 == 0
False
- Le premier test se traduit par: il est vrai que 18 est multiple de 2 ou multiple de 10 (c'est à dire 18 est multiple d'au moins l'un des deux).
- Le second test se traduit par: il est vrai que 18 est multiple de 2 ou multiple de 9 (c'est à dire 18 est multiple d'au moins l'un des deux).
- Le troisième test se traduit par: il est faux que 18 est multiple de 5 ou de 7 (autrement dit, 18 n'est multiple ni de l'un, ni de l'autre)
Solution
def est_multiple_d_au_moins_l_un(n, a, b):
"""
n -- entier naturel
a -- entier naturel non nul
b -- entier naturel non nul
renvoie True si n est multiple de a ou est multiple de b (c'est à dire si n est multiple
d'au moins l'un des deux entiers a, b), renvoie False sinon.
"""
return n%a == 0 or n%b == 0
Essais:
>>> est_multiple_d_au_moins_l_un(12, 3, 4)
True
>>> est_multiple_d_au_moins_l_un(9, 3, 4)
True
Exercice☘
Écrire une fonction prenant en paramètre un entier naturel n et renvoyant en sortie la somme des entiers multiples de 6 ou multiples de 8 compris (au sens large) entre 0 à n.
principe
Le principe est le même que dans l'exercice précédent: on accumule par sommation les valeurs en n'oubliant pas de les filtrer.
code python
def somme_multiples_de_6_ou_de_8(n):
"""
n -- entier naturel
renvoie la somme des entiers naturels multiples d'au moins l'un des deux entiers
6, 8 et valant au plus n.
"""
somme = 0
for k in range(0, n+1):
if k%6 == 0 or k%8 == 0:
somme = somme + k
return somme
Un test:
>>> somme_multiples_de_6_ou_de_8(8)
14
not☘
Après avoir lu le code suivant:
>>> 4 == 3+1
True
>>> not(4 == 3+1)
False
>>> 4 == 5
False
>>> not(4 == 5)
True
écrire une fonction prenant en paramètres un entier naturel n et deux entiers strictement positifs a et b et renvoyant True si n n'est multiple ni de a, ni de b (et renvoyant False sinon).
Exemples:
>>> multiple_d_aucun_des_deux(13, 2, 3)
True
>>> multiple_d_aucun_des_deux(14, 2, 3)
False
Solution
- Une première version:
def multiple_d_aucun_des_deux(n, a, b):
"""
n -- entier naturel
a -- entier naturel non nul
b -- entier naturel non nul
renvoie True si n n'est multiple ni de a, ni de b (c'est à dire si n n'est multiple
d'aucun des deux), renvoie False sinon.
"""
return not(n%a == 0 or n%b == 0)
- Une seconde version:
def multiple_d_aucun_des_deux(n, a, b):
"""
n -- entier naturel
a -- entier naturel non nul
b -- entier naturel non nul
renvoie True si n n'est multiple ni de a, ni de b (c'est à dire si n n'est multiple
d'aucun des deux), renvoie False sinon.
"""
return not(n%a == 0) and not(n%b == 0)
- Une troisième version:
def multiple_d_aucun_des_deux(n, a, b):
"""
n -- entier naturel
a -- entier naturel non nul
b -- entier naturel non nul
renvoie True si n n'est multiple ni de a, ni de b (c'est à dire si n n'est multiple
d'aucun des deux), renvoie False sinon.
"""
return n%a != 0 and n%b != 0