Tests et boucles avec Python Tests - Contactez

publicité
Tests et boucles avec Python
Tests
instruction if
Commençons par regarder le script ci-dessous :
print("Entrer un nombre plus petit que 100.")
nb = int( input( ))
if nb < 100:
print("Ce nombre convient.")
else:
print("Ce nombre est trop grand.")
A l’exécution du script, l’ordinateur va afficher la chaîne “Entrer un nombre plus petit que
100.” et va marquer un temps d’arrêt. En effet, la commande int(input( )) attend ici que l’on
rentre un nombre entier puis que l’on appuie sur la touche Entrée. Ce nombre sera alors
affecté à la variable nb.
Puis le test commence :
• si (IF en anglais) la condition (nb < 100) est vraie, alors le bloc d’instructions qui suit
(ici une seule instruction) est executé,
• sinon (ELSE en anglais), c’est-à-dire si la condition (nb < 100) est fausse, alors c’est
l’autre bloc d’instructions qui est executé.
Note
Ici les deux blocs d’instructions ne sont composés que d’une seule instruction.
Le couple if et else agit finalement comme un aiguillage. Attention cependant, l’instruction
else et son bloc sont parfois omis. Dans ce cas, si la condition est fausse, rien n’est exécuté.
Attention
Avec Python3, la fonction input() renvoie systématiquement une chaîne de caractères. Donc si
c’est un nombre que l’on veut manipuler, il faudra utiliser la fonction int() s’il s’agit d’un
entier ou float() s’il s’agit d’un décimal. Donc avec Python3, au dessus, il faut remplacer
l’instruction nb = input() par
chaine = input()
nb = float(chaine)
ou bien directement
nb = float(input())
Comparaison de nombres
Vous aurez souvent à comparer des nombres. Voici une liste des opérateurs que vous pourrez
utiliser.
• x == y est vrai quand x est égal à y,
• x != y est vrai quand x est différent de y,
• x > y est vrai quand x est strictement supérieur à y,
• x < y est vrai quand x est strictement inférieur à y,
• x >= y est vrai quand x est supérieur ou égal à y, et
• x <= y est vrai quand x est inférieur ou égal à y.
Doubles inégalités
Python permet de plus l’enchaînement des comparaisons.
En mathématiques, il n’est pas rare que l’on ait à écrire 3 ≤ x ≤ 7 pour dire que x appartient à
l’intervalle [3;7] . En Python, cela peut être fait grâce au connecteur and, comme dans les
autres langages.
>>> for x in range(5):
... if 3 <= 2*x and 2*x <= 7:
...
print(x, "est dans l'intervalle")
... else:
...
print(x, "n'est pas dans l'intervalle")
...
Mais c’est bien plus lisible avec la double inégalité, et chaque expression (ici
évaluée qu’une fois.
) n’est
>>> for x in range(5):
... if 3 <= 2*x <= 7:
...
print(x, "est dans l'intervalle")
... else:
...
print(x, "n'est pas dans l'intervalle")
...
Compléments sur les booléens
En début de chapitre nous avons vu que certaines conditions pouvaient être «vraies» ou
«fausses». Une branche des mathématiques appelée «logique» s’occupe justement de ce genre
de problèmes et les booléens en sont les briques élémentaires. En Python, les mots True et
False représentent respectivement «vrai» et «faux» (comme en anglais en fait).
>>> True
True
>>> False
False
>>> true # attention à la majuscule !!!
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'true' is not defined
>>> 0 == 0
True
>>> 0 > 1
False
Pour aller plus loin
La négation s’exprime avec not.
>>> not True
False
>>> not False
True
>>> not 0 == 0
False
On peut combiner deux booléens entre eux avec les opérateurs and et or. Ce sont
respectivement les opérateurs logiques «et» et «ou» (comme en anglais aussi). Ci-dessous
nous demandons à Python d’écrire les tables de vérité de ces deux opérateurs.
>>> for a in [False, True]:
... for b in [False, True]:
...
print(a, "and", b, "vaut", a and b)
...
False and False vaut False
False and True vaut False
True and False vaut False
True and True vaut True
>>> for a in [False, True]:
... for b in [False, True]:
...
print(a, "or", b, "vaut", a or b)
...
False or False vaut False
False or True vaut True
True or False vaut True
True or True vaut True
On fera du calcul booléen plus tard. Soyez rassuré !!
Boucles
Instructions while et for
Tant que
Le principe de la boucle while, c’est d’exécuter un bloc d’instructions tant que (while in
english) une condition donnée est vraie. Encore une fois commençons par un exemple :
>>> i = 1
>>> while i <= 10:
... print(i)
... i = i + 1
...
Ici tant que (while) la condition i ≤ 10 est vraie, le bloc d’instructions (il y en a deux dans
notre cas) est exécuté.
Attention
La deuxième instruction est primordiale car elle assure que l’on va sortir de la boucle. En
effet, avec ce genre de boucle, il faut faire attention à ne pas construire une boucle sans fin.
Pour savoir combien de fois la boucle while est executée, il peut être utile d’utiliser une
variable qui servira de compteur, c’est-à-dire une variable initialisée à zéro et incrémentée de
1 dans le bloc d’instructions.
Pour
Lorsque l’on souhaite répéter un nombre donné de fois la même instruction ou le même bloc
d’instructions, la commande for est la plus appropriée.
Admettons que l’on veuille afficher 10 fois le mot poulet. Voici ce que l’on peut faire.
>>> for i in range(10): # pour i allant de 0 à 4
... print("poulet")
...
Bon, arrêtons là le poulet et regardons un exemple plus mathématique. Si on veut afficher les
cubes des entiers de 1 à 15 :
>>> for i in range(1, 16): # pour i allant de 1 à 15
...
print(i**2)
Puis terminons sur un exemple classique qui est le calcul de la somme des premiers entiers.
30
Disons ici que l’on s’arrête à 30. Autrement dit, on veut calculer
∑ i = 1 + 2 + 3 + ... + 30 S=0
i =1
for i in range(1,31) :
>>> S = 0
>>> for i in range(1, 31): # pour i allant de 1 à 30
... S = S + i
>>>print(S)
Téléchargement