2. Boucles
a) Boucle if

Si on souhaite exécuter un bloc de commandes à condition qu'une propriété soit vérifiée, on utilise la commande if.
Par exemple, on choisit au hasard un nombre compris entre 1 et 5, et on souhaite afficher un message différent suivant la valeur du nombre choisi.
Tout d'abord il faut choisir le nombre de manière aléatoire.
Pour cela on utilise la fonction random.
Il est impératif de l'importer.
import random
a = random.randint(1,5)
if a == 2:
print("a = 2")
elif a ==3:
print("a = 3")
else:
print("a n'est pas égal à 2 ou à 3")
Si on souhaite écrire la condition : a ≠ 2, on écrit :
if a != 2:
if signifie : si
elif signifie else if, c'est-à-dire : sinon, si
else signifie : sinon (autrement dit : dans tous les autres cas)
on peut aussi utiliser les commandes or et and si on souhaite vérifier plusieurs conditions.
import random
a = random.randint(1,5)
if a == 2 or a == 3:
print("a = 2 ou a = 3")
elif a == 2 and a == 3:
print("cette condition ne sera jamais remplie !")
Il est facile de tester la parité d'un entier :
le reste de la division euclidienne d'un nombre pair par 2 est 0,
tandis que :
le reste de la division euclidienne d'un nombre impair par 2 est 1.
pour obtenir le reste de la division de a par b, on fait :
a % b
Ainsi par exemple :
8 % 2 retrourne 0
9 % 2 retourne 1
De manière générale,
si a % b = 0, a est divisible par b.
Voici un programme qui affiche si un nombre choisi au hasard entre 1 et 20 est pair ou impair :
import random
a = random.randint(1,20)
print(a)
if a % 2 == 0 :
print("a est pair")
else:
print("a est impair")
b) Boucle while
i) Afficher 10 nombres entiers choisis au hasard
La boucle if n'est réalisée qu'une seule fois.
Or on peut avoir besoin d'exécuter une séquence plusieurs fois.
whille permet d'exécuter une séquence tant que la condition est vérifiée. Dès qu'elle n'est plus vérifiée, on sort de la boucle et on n'y revient pas.
Par exemple, si je veux afficher 10 nombres choisis au hasard :
import random
a = random.randint(1,10)
n = 1 # il faut donner une valeur à la mémoire n pour pouvoir entrer dans la boucle
while n <= 10:
print("a =",a)
a = random.randint(1,10)
n = n + 1
Attention : si on oublie la commande : n = n + 1, on se retrouve avec une boucle sans fin, c'est-à-dire que le programme ne peut plus s'arrêter.
Si on avait mis comme condition : while n >= 0, on aurait aussi obtenu une boucle sans fin.
ii) Afficher tous les entiers de 1 à 10
import random
a = 1
while a <=10:
print("a =",a)
a = a + 1
c) For n in range (a,b)
On peut utiliser for n in range (a,b) pour effectuer un bloc de commandes plusieurs fois.
La boucle de fera pour n prenant successivement les valeurs entre a et b - 1.
Pour afficher la table de 7, voici comment faire :
for n in range (1,11):
print("7 x",n,"=",7*n)
Vous voyez que cela nous économise deux lignes de calcul pour le même résultat.
De plus il n'y a pas de risque de boucle sans fin !
ii) Uniquement les cinq multiples de 3 et 7
On peut bien sûr imbriquer des conditions les unes dans les autres.
print()
print("Liste des 5 premiers multiples de 3 et 7 :")
print()
for a in range (3,16,3):
print("7 x", a ,"=",7*a)
print()
print()
print("A l'issue de ces boucles, a = ",a,". Vous remarquez donc que a conserve la dernière valeur prise dans le 'for a in range'")
d) Exercices
Ecrire un programme permettant de :
1) Afficher la table de 7 (en colonne) avec une astérisque pour les multiples de 2.
2) Afficher 10 produits de deux entiers choisis de manière aléatoire.
3) Afficher la table de 3, en précisant pour chaque produit si le résultat est pair ou non
4) Choisir un entier au hasard, celui-ci étant compris entre deux bornes de votre choix, puis dire s'il est pair.
S'il est pair, donner le résultat de sa division par 2;
dans le cas contraire, dire qu'il n'est pas divisible par 2, puis afficher sa division euclidienne par 2.
Exemple : 7 = 3 x 2 + 1
5) Choisir un entier compris entre 1 et 20 au hasard, puis dire s'il est pair ou impair.
Afficher ensuite les 5 entiers multiples de 3 suivants
6) Proposer 10 énoncés d'équations du type ax + b = c à résoudre, avec a, b et c trois entiers positifs compris entre 2 et 20
7) Proposer 10 énoncés d'équations du type ax + b = c à résoudre, avec a, b et c trois entiers positifs compris entre 1 et 10, sans oublier d'afficher x + b = c si a = 1 (et non 1x + b = c).
Corrigés : faire tourner le programme en lien. Vous avez la possibilité de copier-coller le programme de chaque exercice.
Autre exemple : demander à l'utilisateur d'entrer un nombre compris entre 1 et 999 et dire s'il est divisible par 3, en le justifiant grâce au critère de divisibilité
Pour cela, on utilise :
le fait que l'on peut décomposer un nombre compris entre 0 et 999 de la manière suivante :
nombre = 100c + 10d + u, où c, d et u sont des entiers compris entre 0 et 9.
l'opérateur // de Python.
a // b est le quotient de la division euclidienne de a par b.
Ainsi :
a = (a // b) x b + a % b
attention, pour demander à un utilisateur d'entrer un nombre et de faire en sorte que ce nombre soit stocké sous forme d'entier dans la mémoire nombre, on fait :
nombre = int(input("Entrez un nombre " ))
Si on écrit seulement :
nombre = input("Entrez une nombre ")
La mémoire nombre sera de type chaîne.