Aller au contenu principal

Condition - If

Rappel:

  • Opérateurs logiques not and or
  • Opérateurs relationnels == != > < <= >=

if​

Syntaxe:

if expression booléenne:
instruction;
Mécanisme de l'instruction ifMécanisme de l'instruction if

Exemple:

nombre: int = 10

if nombre >= 0:
print("le nombre", nombre, "est positif")

print("Cette ligne est toujours exécutée")

En python, il n'y a pas de parenthèses au if ni d'accolades, l'indention est importante. Notez la ligne vide à la fin du if avant le dernier print, ça permet de bien voir la fin du if.

if-else​

Syntaxe:

if expression booléenne:
instruction A
else:
instruction B
Mécanisme de l'instruction if-elseMécanisme de l'instruction if-else

Exemple:

a: int = 2
b: int = 5

if a < b:
print("a < b")
else:
print("a >= b")

print("Fin")

Opérateur ternaire​

Lorsque les instructions du if consistent à donner une valeur à une variable:

Syntaxe:

variable = condition if valeur_si_true else valeur_si_false
a: int = 2
b: int = 5
min: int

# Version longue
if a < b:
min = a
else:
min = b

# Version courte
min = a if a < b else b

if - else if​

Syntaxe:

if condition1:
#instruction si condition1 est vrai

elif condition2:
#instruction si condition1 est fausse et condition2 est vrai

elif condition3:
#instruction si condition1 et condition2 sont fausses et condition3 est vrai

else:
#instruction si condition1 et condition2 et condition3 sont fausses.
Mécanisme de if-elif-elif-elseMécanisme de if-elif-elif-else

S'il n'y a pas de else, il est possible qu'aucune instruction ne s'exécute si toutes les conditions sont fausses:

Mécanisme de if-elif-elif-elif sans elseMécanisme de if-elif-elif-elif sans else

Exemple:

  • A: 90 et plus
  • B: 80 - 89
  • C: 70 - 79
  • D: 60 - 69
  • E: 59 et moins
note: int = 72
grade: str

if note >= 90:
grade = 'A'

elif note >= 80:
grade = 'B'

elif note >= 70:
grade = 'C'

elif note >= 60:
grade = 'D'

else:
grade = 'E'

print(note, ':', grade)

Pléonasmes​

Évitez les pléonasmes de programmeurs:

a: int = 2
b: int = 3

# if problématique
if a < b == True:
print("a < b")

# if corrigé
if a < b:
print("a < b")
# if problématique
if a < b:
print("a < b")

if a >= b:
print("a >= b")

# if corrigé
if a < b:
print("a < b")
else:
print("a >= b")
AGE_MAJEUR: int = 18
age: int
majeur: bool

# if problématique
if age >= AGE_MAJEUR:
majeur = True
else:
majeur = False

# if corrigé, il n'est pas nécessaire
majeur = age >= AGE_MAJEUR

Redondance​

Cas exemple:

Calculer le salaire net à partir du salaire brut. SI le salaire brut est supérieur ou égal à 1000$ appliquer des déductions de 30% sur le salaire brut. SI le salaire brut est inférieur à 1000$ appliquer des déductions de 40% sur le salaire brut.

Exemple problématique:

SAL_LIMITE: int = 1000
PCT_INF: float = 0.3
PCT_SUP: float = 0.4

salaireBrut: float
deductions: float
salaireNet: float

print("Salaire brut: ")
salaireBrut = 650 # sera saisi par l'utilisateur plus tard

if salaireBrut >= SAL_LIMITE:
deductions = salaireBrut * PCT_SUP
salaireNet = salaireBrut - deductions

else:
deductions = salaireBrut * PCT_INF
salaireNet = salaireBrut - deductions

print("Salaire net:", salaireNet)

if corrigé:

if salaireBrut >= SAL_LIMITE:
deductions = salaireBrut * PCT_SUP
else:
deductions = salaireBrut * PCT_INF

# Ligne sortie du if
salaireNet = salaireBrut - deductions

Simplification​

Dans certains cas inverser une condition simplifie le code:

import random

# Version longue
dmg: int
de: int

de = random.randint(1, 6)

if de == 1 or de == 2 or de == 4 or de == 6:
dmg = de
else:
dmg = 0

# Version simplifiée 1
dmg: int
de: int

de = random.randint(1, 6)

if de == 3 or de == 5:
dmg = 0
else:
dmg = de

# Version simplifiée 2
dmg: int = 0
de: int

de = random.randint(1, 6)

if not (de == 3 or de == 5):
dmg = de

# Version simplifiée 3
dmg: int = 0
de: int

de = random.randint(1, 6)

if de != 3 and de != 5:
dmg = de

Truthy et Falsy​

Aucune traduction française pour truthy et falsy.

Les valeurs suivantes sont falsy:

  • int: 0
  • float: 0.0
  • bool: False
  • str: "" ou ''
  • tuple: ()
  • liste: []
  • objet:

Toutes les autres valeurs sont truthy.

Le if et elif fonctionnent avec les valeurs falsy et truthy, exemple:

nb = random.randint(0, 1)

# Au lieu de:
if nb == 1:
print("YEAH!")
else:
print("nope")

# On fera:
if nb:
print("YEAH!")
else:
print("nope")