RES 1-04 Bases de la programmation 1 Python – TP 3
3. Tester si un nombre est entier
Quelques indispensables Le module math fournit les trois fonctions suivantes
pour passer d’un nombre réel à un entier :
• round() arrondit à l’entier le plus proche ;
1. Charger un module complémentaire • floor() renvoie l’entier inférieur ou égal ;
• ceil() renvoie l’entier supérieur ou égal.
Les fonctions disponibles sous Python ne sont pas
toutes accessibles directement. Certaines nécessitent from math import round floor ceil
d’être chargées depuis ce qu’on appelle un module. x = 3/2
La fonction racine carrée sqrt(), pour square root en print(round(x)) # arrondi
anglais, est par exemple fournie par le module math. print(floor(x)) # partie entière
print(ceil(x)) # partie entière par excès
from math import sqrt
x = sqrt(2) Pour tester si un nombre (de type float) est un entier,
print(x) il suffit de vérifier s’il est égal à sa conversion en entier
print(x**2) (obtenue avec la fonction int).
Essayer d’utiliser sqrt() sans l’avoir chargée depuis le
x = float(input("Saisir un réel : "))
module math conduit à une erreur : Python indique que
if x == int(x):
la fonction n’est pas définie.
print(x, "est un entier.")
Il est possible de charger en une fois toutes les fonctions else:
contenues dans un module donné. Il faut pour cela uti- print(x, "n'est pas un entier.")
liser le mot clé *.
On remarque ici que le nombre x sera affiché avec un
from math import *
« .0 » à la fin : on aura par exemple 6.0 et pas 6. C’est
x = abs(cos(pi) - sqrt(2))
que Python fait la différence entre 6.0 qui est de type
print(x)
float et 6 qui est de type int. Si l’on souhaite affi-
Le module math sera très souvent utile. Il définit toutes cher un objet de type float comme un entier, il faut le
les fonctions mathématiques usuelles, ainsi que les convertir avec la commande int(). Sur l’exemple pré-
constantes π et e. cédent, on modifierait juste la ligne :
print(int(x), "est un entier.")
2. Tester si un nombre est divisible par un autre
Les commandes // et % renvoient respectivement le 4. Faire du contrôle de saisie
quotient et le reste de la division euclidienne d’un en-
tier par un autre. Il peut être utile dans un programme de contrôler que la
saisie demandée à un utilisateur est correcte. Bien sou-
# div. euclid. de 14 par 4 : 14 = 4*3 + 2 vent, on redemandera une nouvelle saisie tant que celle
print(14 // 4) # affiche 3 : quotient effectuée est incorrecte.
print(14 % 4) # affiche 2 : reste
x = float(input("Saisir un x > 0 : "))
Le reste de la division euclidienne de n par p est aussi
while x <= 0:
appelé « n modulo p ». Par exemple, 7 modulo 3 vaut 1.
print("Saisie incorrecte.")
Il devient très facile de tester si un entier est divisible
x = float(input("Saisir un x > 0 : "))
par un autre : n est divisible par p si et seulement si n
# En sortie du while : saisie correcte !
modulo p est nul.
print(x, "est bien > 0.")
n = int(input("Saisir un entier : "))
if n % 2 == 0: Exercice 2
print(n, "est pair.") Écrire un programme qui demande à l’utilisateur de
else: saisir deux entiers N , p ∈ N∗ avec p ≤ N et qui, une fois
print(n, "est impair.") que la saisie est correcte, affiche tous les multiples de p
qui sont inférieurs ou égaux à N .
Exercice 1
Écrire un programme qui demande à l’utilisateur de Exercice 3
saisir trois entiers a, b et N , et qui indique si N est divi- Écrire un programme qui demande à l’utilisateur de
sible par a, par b, par les deux ou par aucun des deux. saisir un entier n ∈ N∗ et qui, une fois que la saisie est
Exemples d’affichage attendu : correcte, affiche tous les diviseurs de n.
12 est divisible par 3 mais pas par 5.
60 est divisible à la fois par 6 et par 4.
35 n'est divisible ni par 2 ni par 9.
Raffinement : proposer une solution avec des booléens.