Conditions: if, then, else - Learn Python 3 - Snakify

Lesson 3
Conditions: si-alors-autrement


1. Syntaxe

Tous les programmes de la première leçon ont été exécutés séquentiellement, ligne après ligne. Aucune ligne n'a pu être ignorée.

Considérons le problème suivant: pour l'entier X, détermine sa valeur absolue. Si X> 0 alors le programme devrait imprimer la valeur X, sinon il devrait imprimer -X. Ce comportement ne peut pas être atteint en utilisant le programme séquentiel. Le programme doit sélectionner conditionnellement l'étape suivante. C'est là que les conditions aident:

x = int(input())
if x > 0:
    print(x)
else:
    print(-x)

Ce programme utilise une instruction conditionnelle if . Après le if on met une condition (x > 0) suivie d'un deux-points. Après cela nous mettons un bloc d'instructions qui ne sera exécuté que si la condition est vraie (c'est-à-dire évalue à True ). Ce bloc peut être suivi par le mot else , deux-points et un autre bloc d'instructions qui ne seront exécutées que si la condition est fausse (c'est-à-dire évaluée à False ). C'est le cas ci-dessus, la condition est fausse, donc le bloc 'else' est exécuté. Chaque bloc doit être indenté en utilisant des espaces.

Pour résumer, l'instruction conditionnelle dans Python a la syntaxe suivante:

if condition :
    true-block
    several instructions that are executed
    if the condition evaluates to True
else:
    false-block
    several instructions that are executed
    if the condition evaluates to False

Le mot-clé else avec le bloc 'false' peut être omis dans le cas où rien ne devrait être fait si la condition est fausse. Par exemple, nous pouvons remplacer la variable x par sa valeur absolue comme ceci:

x = int(input())
if x < 0:
    x = -x
print(x)

Dans cet exemple, la variable x est affectée à -x seulement si x < 0 . En revanche, l'instruction print(x) est exécutée à chaque fois, car elle n'est pas indentée, elle n'appartient donc pas au bloc "true".

L'indentation est un moyen général en Python de séparer des blocs de code. Toutes les instructions d'un même bloc doivent être indentées de la même manière, c'est-à-dire qu'elles doivent avoir le même nombre d'espaces au début de la ligne. Il est recommandé d'utiliser 4 espaces pour l'indentation.

L'indentation est ce qui différencie Python de la plupart des autres langages, dans lesquels les accolades { et } sont utilisées pour former les blocs.

En passant, il existe une fonction intégrée pour une valeur absolue en Python:

x = int(input())
print(abs(x))
Advertising by Google, may be based on your interests

2. Conditions imbriquées

Toute instruction Python peut être placée dans des blocs 'true' et 'false', y compris une autre instruction conditionnelle. De cette façon, nous obtenons des conditions imbriquées. Les blocs de conditions internes sont indentés en utilisant deux fois plus d'espaces (par exemple 8 espaces). Voyons voir un exemple. Compte tenu des coordonnées du point sur l'avion, imprimez son quadrant.

x = int(input())
y = int(input())
if x > 0:
    if y > 0:
        # x est supérieur à 0, y est supérieur à 0
        print("Quadrant I")
    else:    
        # x est supérieur à 0, y est inférieur ou égal à 0
        print("Quadrant IV")
else:
    if y > 0:
        # x est inférieur ou égal à 0, y est supérieur à 0
        print("Quadrant II")
    else:    
        # x est inférieur ou égal à 0, y est inférieur ou égal à 0
        print("Quadrant III")

Dans cet exemple, nous utilisons les commentaires: le texte explicatif qui n'a aucun effet sur l'exécution du programme. Ce texte commence par le hash # et dure jusqu'à la fin de la ligne.

Advertising by Google, may be based on your interests

3. Opérateurs de comparaison

Habituellement la condition après if a un ou plusieurs des opérateurs suivants:

<
Moins - la condition est vraie si le côté gauche est inférieur au côté droit.
>
plus grand - la condition est vraie si le côté gauche est plus grand que le côté droit.
<=
moins ou égal.
>=
plus grand ou égal.
==
égal.
!=
inégal.

Par exemple, la condition x * x < 1000 signifie "la valeur de l'expression x * x est inférieure à 1000", et la condition 2 * x != y signifie "la valeur doublée de la variable x n'est pas égale à la valeur de la variable y ".

Les opérateurs de comparaison en Python peuvent être regroupés comme suit: a == b == c ou x <= y >= 10 . C'est une chose rare parmi les langages de programmation.

Advertising by Google, may be based on your interests

4. Objets booléens et opérateurs logiques

Lorsque nous additionnons deux objets entiers en utilisant l'opérateur + , comme 2 + 5 , nous obtenons un nouvel objet: 7 . De même, lorsque nous comparons deux entiers en utilisant l'opérateur < , comme 2 < 5 , nous obtenons un nouvel objet: True .

print(2 < 5)
print(2 > 5)
Les objets True et False ont un type spécial appelé bool . Comme chaque nom de type peut être utilisé pour convertir des objets dans ce type, voyons ce que cette distribution donne pour les nombres:
print(bool(-10))    # Vrai
print(bool(0))      # Faux - zéro est le seul faux nombre
print(bool(10))     # Vrai

print(bool(''))     # False - la chaîne vide est la seule fausse chaîne
print(bool('abc'))  # Vrai

Parfois, vous devez vérifier plusieurs conditions à la fois. Par exemple, vous pouvez vérifier si un nombre n est divisible par 2 en utilisant la condition n % 2 == 0 ( n donne un reste 0 en divisant par 2 ). Si vous avez besoin de vérifier que deux nombres n et m sont divisibles tous les deux par 2, vous devez vérifier n % 2 == 0 et m % 2 == 0 . Pour ce faire, vous les rejoignez en utilisant un opérateur and (AND logique): n % 2 == 0 and m % 2 == 0 .

Python a logique ET, OR logique et négation.

Opérateur and est un opérateur binaire qui est évalué à True si et seulement si son côté gauche et son côté droit sont tous deux True .

Opérateur or est un opérateur binaire qui évalue à True si au moins un de ses côtés est True .

L'opérateur not une négation unaire, il est suivi d'une certaine valeur. Il est évalué à True si cette valeur est False et vice versa.

Vérifions qu'au moins l'un des deux nombres se termine par 0:

a = int(input())
b = int(input())
if a % 10 == 0 or b % 10 == 0:
    print('YES')
else:
    print('NO')

Vérifions que le nombre a est positif et le nombre b est non négatif:

if a > 0 and not (b < 0):

Au lieu de not (b < 0) on peut écrire (b >= 0) .

Advertising by Google, may be based on your interests

5. mot 'elif'

Si vous avez plus de deux options à différencier à l'aide de l'opérateur conditionnel, vous pouvez utiliser l'instruction if... elif... else .

Montrons comment cela fonctionne en réécrivant l'exemple avec le point (x, y) sur le plan et les quadrants d'en haut:

x = int(input())
y = int(input())
if x > 0 and y > 0:
    print("Quadrant I")
elif x > 0 and y < 0:
    print("Quadrant IV")
elif y > 0:
    print("Quadrant II")
else:
    print("Quadrant III")

Dans ce cas, les conditions dans if et elif sont vérifiées l'une après l'autre jusqu'à ce que la première condition vraie soit trouvée. Alors seulement le vrai-bloc pour cette condition est exécuté. Si toutes les conditions sont fausses, le bloc 'else' est en cours d'exécution s'il est présent.

Advertising by Google, may be based on your interests