Aller au contenu

❓ Test et condition⚓︎

Comparaisons d'entiers⚓︎

Comparaisons avec Python

Comparaison Opérateur
Strictement inférieur à <
Inférieur ou égal à <=
Égal à ==
Différent de !=
Supérieur ou égal à >=
Strictement supérieur à >

Ces opérateurs entre deux entiers renvoient un booléen :

  • True, pour Vrai
  • False, pour Faux

Exemples

🐍 Console Python
>>> 153 > 98
True
>>> (6 - 6) <= 0
True
>>> 15 != 10 + 5
False

Astuce

Pour tester si un nombre est dans un intervalle, on peut faire deux tests d'un coup avec Python.

🐍 Console Python
>>> x = 35 * 47
>>> 1000 <= x <= 2000
True
>>> y = 55 - 5
>>> 10 <= y <= 20
False
  • \(35×47 \in [\![1000\, ; 2000]\!]\)
  • \(55-5 \not\in [\![10\, ; 20]\!]\)

Test simple⚓︎

🐍 Script Python
if condition:
    action_1()
    action_2()
action_3()
📋 Texte
SI LA condition EST_VRAIE ALORS
    action_1
    action_2
action_3
  • Les actions 1 et 2 ne sont effectuées que si la condition est Vraie.
  • L'action 3 sera faite ensuite dans tous las cas (sauf si le programme s'arrête entre temps).
📥 Entrée
19
🐍 Script Python
age = int(input())

if age >= 18:
    print("Vous pouvez voter")
    print("Vous devriez y réfléchir sérieusement")
print("Vous observerez le résultat")
📤 Sortie
Vous pouvez voter
Vous devriez y réfléchir sérieusement
Vous observerez le résultat
📥 Entrée
17
🐍 Script Python
age = int(input())

if age >= 18:
    print("Vous pouvez voter")
    print("Vous devriez y réfléchir sérieusement")
print("Vous observerez le résultat")
📋 Texte
Vous observerez le résultat

La syntaxe

  • Il faut commencer par if, c'est un mot clé.
  • On écrit ensuite la condition, résultat d'un test.
  • On finit par : comme pour une structure de répétition avec for
  • On écrit les instructions concernées dans un bloc décalé. On dit indenté. On utilise la touche Tab, qui devrait normalement générer 4 espaces.
  • On désindente pour sortir de la structure.

Structure conditionnelle⚓︎

Avec Python, on a les constructions suivantes possibles :

🐍 Script Python
if condition:
    action()

Si la condition est évaluée à True

  • alors action() est exécutée.
🐍 Script Python
if condition:
    action()
else:
    autre_action()

Si condition est évaluée à True

  • alors action() est exécutée,
  • sinon, autre_action() est exécutée.
🐍 Script Python
if condition_1:
    action_1()
elif condition_2:
    action_2()
elif condition_3:
    action_3()
else:
    action_autres_cas()
  • elif est la contraction de else if, pour « sinon si ».
  • Il peut y avoir autant de blocs elif que l'on souhaite.
  • On peut terminer, par un bloc else pour les cas non traités.

Cette construction est utilisée classiquement pour traiter de manière spécifique chaque cas d'une liste.

Exemple mathématique⚓︎

La suite de Syracuse d'un entier \(N>0\) est définie par récurrence, de la manière suivante :

  • \(u_0 = N\)
  • pour tout entier naturel \(n\) : \(u_{n+1} = \begin{cases}\dfrac{u_n}{2}&\text{si } u_n \text{ est pair,}\\3×u_n + 1&\text{si } u_n \text{ est impair.}\end{cases}\)

On peut définir la fonction terme_suivant

###

def termepy-undsuivant(upy-undn):bksl-nl """""Renvoie le terme suivant upy-undnbksl-nl dans une suite de Syracusebksl-nl """bksl-nl bksl-nl if upy-undn % 2 == 0:bksl-nl return upy-undn // 2bksl-nl else:bksl-nl return 3 py-str upy-undn + 1bksl-nlbksl-nl

On peut alors l'utiliser en console :

🐍 Console Python
>>> terme_suivant(7)
22
>>> terme_suivant(22)
11
>>> terme_suivant(11)
34

Dans la console, penser à appuyer sur la flèche du clavier pour remonter dans l'historique et pouvoir ne modifier que le paramètre.

Répétition d'instructions

On devine rapidement l'intérêt de pouvoir ici répéter des instructions :

  • un nombre choisi de fois, ou alors
  • tant qu'une certaine condition est vérifiée.

On verra la seconde très bientôt, mais vous pouvez déjà essayer :

🧾 Algorithme
    n = (UN NOMBRE ENTRE 1 ET 100 AU HASARD)
    RÉPÉTER 1000 FOIS
        n = terme_suivant(n)
    AFFICHER n

Que remarquez-vous ?

Constat

On constate que le résultat est 4, 2 ou 1, qui constituent une boucle. 4→2→1→4→2→1→...

Exercice⚓︎

Que dire des scripts suivants ?

  • Sont-ils corrects ?
  • Sont-ils équivalents ?
  • Sont-ils bien écrits ?
🐍 Script Python
if condition_1:
    ####################
    #                 ##
    action_1()        ##
    #                 ##
    ####################
else:
    if condition_2:
        ####################
        #                 ##
        action_2()        ##
        #                 ##
        ####################
    else:
        if condition_3:
            ####################
            #                 ##
            action_3()        ##
            #                 ##
            ####################
        else:
            ####################
            #                 ##
            action_0()        ##
            #                 ##
            ####################
🐍 Script Python
if condition_1:
    ####################
    #                 ##
    action_1()        ##
    #                 ##
    ####################
elif condition_2:
    ####################
    #                 ##
    action_2()        ##
    #                 ##
    ####################
elif condition_3:
    ####################
    #                 ##
    action_3()        ##
    #                 ##
    ####################
else:
    ####################
    #                 ##
    action_0()        ##
    #                 ##
    ####################
🐍 Script Python
if condition_1:
    ####################
    #                 ##
    action_1()        ##
    #                 ##
    ####################
elif condition_2:
        ####################
        #                 ##
        action_2()        ##
        #                 ##
        ####################
    elif condition_3:
            ####################
            #                 ##
            action_3()        ##
            #                 ##
            ####################
        else:
            ####################
            #                 ##
            action_0()        ##
            #                 ##
            ####################
🐍 Script Python
if condition_1:
    ####################
    #                 ##
    action_1()        ##
    #                 ##
    ####################
elif condition_2:
        ####################
        #                 ##
        action_2()        ##
        #                 ##
        ####################
elif condition_3:
            ####################
            #                 ##
            action_3()        ##
            #                 ##
            ####################
else:
                ####################
                #                 ##
                action_0()        ##
                #                 ##
                ####################
Solution

Le script C est incorrect, elif condition_3: ceci est mal indenté, le dernier else également.

Un elif doit être indenté au même niveau que le elif précédent ou if précédent.

Les scripts A, B et D sont équivalents ; oui, techniquement.

Le D est mal écrit, on a le droit d'indenter chaque bloc autant qu'on veut, mais, ici, c'est mal choisi.

Le A est maladroit. On préfère utiliser elif dans ce cas-là.

Le B, voilà la bonne méthode.