Les exécutions conditionnelles

Sélection conditionnelle

Une structure conditionnelle est une suite d'instructions qui ne seront éxécutées que si les conditions requises sont réalisées.

Un premier exemple :

			
		n ← ?
		Si n est pair alors 
			afficher("n est pair")
		sinon 
			afficher("n est impair")
		

n=int(input("Entrez un entier : "))
if n%2==0 :
	print("{} est pair".format(n))
else :
	print("{} est impair".format(n))
  • Comme avec for et while, l'indentation après la ligne if ... : est obligatoire (et automatique avec un éditeur adapté) : elle permet de délimiter la portée du if . Même remarque pour l'indentation délimitant la portée du else .
  • La présence de la partie else n'est pas obligatoire (imaginer un cas où l'on ne doit rien "faire" lorsque n est impair).
  • On remarquera l'utilisation de == pour le test d'égalité. On ne confondra pas avec = qui sert à l'affectation d'une variable.

Les opérateurs de comparaison.

Nous avons vu dans l'exemple ci-dessus comment tester que deux variables ont même valeur. On peut comparer les valeurs de deux variables avec les opérateurs du tableau suivant.

OpérateurSymbole
égalité==
différent de !=
inférieur (strict) <
supérieur (strict) >
inférieur ou égal <=
supérieur ou égal >=

a=int(input("Entrez un entier a : "))
b=int(input("Entrez un entier b : "))

if a!=b :
	print("Les entiers {} et {} sont différents".format(a,b) )
	if a < b :
		print(" {} est le plus petit des deux.".format(a) )
		print(" Et {} le plus grand des deux.".format(b) )
	else :
		print(' {} est le plus grand. '.format(a) )
else :
	print(' a et b sont égaux.')

Testez ce programme et attachez vous à comprendre la portée de chaque condition.

Les booléens

Il n'existe que deux valeurs booléennes : True et False.

Un test, comme ceux des programmes ci-dessus, renvoie toujours une valeur booléenne.

 
a=(2==3)
print("Valeur de a : " , a)
print("Type de a : ", type(a))

b=(5==5)
print("Valeur de b : " , b)
print("Type de b : ", type(b))


c=(7>8)
print("Valeur de c : " , c)
print("Type de c : ", type(c))

On obtient :

Valeur de a :  False
Type de a :  <class 'bool'>
Valeur de b :  True
Type de b :  <class 'bool'>
Valeur de c :  False
Type de c :  <class 'bool'>

Avec plus de deux cas.

Lorsqu'il y a plus de deux cas à envisager, on peut imbriquer les if ... else .... Mais un tel code est vite difficile à lire. On utilisera elif lorsque c'est possible pour éviter ces imbrications.

Exemple :


Si le reste de la division de n par 4 est 0 :
	afficher("n est multiple de 4.")
Sinon
	Si le reste de la division de n par 4 est 1 :
	  	afficher("le reste est 1.")
	Sinon
	  	Si le reste de la division de n par 4 est 2 :
	  		afficher("le reste est 2.")
	  	Sinon
	  		afficher("le reste est 3.")

A comparer avec l'utilisation d'un elif :

 
n=int(input("Entrez un entier positif : "))
if n%4==0:
	print("{} est multiple de 4.".format(n))
elif n%4==1:
	print("Le reste de la division de {} par 4 est 1.".format(n))
elif n%4==2 :
	print("Le reste de la division de {} par 4 est 2.".format(n))
else :
	print("Le reste de la division de {} par 4 est 3.".format(n))