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)