if / elif / elseif condition1:
bloc1 # exécuté si condition1 est vraie
elif condition2:
bloc2 # exécuté si condition1 est fausse ET condition2 est vraie
else:
bloc3 # exécuté si toutes les conditions sont fausses
elif et le else sont facultatifs ;elif que nécessaire ;=== qui est l'affectation).!=<, <=, >, >=in"a" in "chat" renvoie True.andTrue si les deux opérandes sont vrais.orTrue si au moins un opérande est vrai.notPriorité : not $>$ and $>$ or. En cas de doute, utiliser des parenthèses.
if x = 5 au lieu de if x == 5 (affectation au lieu de comparaison) ;if x == True au lieu de simplement if x ;if 0 < x and x < 10 alors que Python autorise l'écriture chaînée : if 0 < x < 10.def signe(n):
if n > 0:
return "positif"
elif n < 0:
return "négatif"
else:
return "nul"
def est_bissextile(annee):
# Divisible par 4 MAIS pas par 100, SAUF si divisible par 400
return (annee % 4 == 0 and annee % 100 != 0) or (annee % 400 == 0)
def mention(moyenne):
if moyenne >= 16:
return "Très bien"
elif moyenne >= 14:
return "Bien"
elif moyenne >= 12:
return "Assez bien"
elif moyenne >= 10:
return "Admis"
else:
return "Non admis"
# Python n'évalue pas la seconde condition si la première suffit
def divise(a, b):
if b != 0 and a % b == 0: # pas d'erreur si b == 0
return True
return False
x = 7
print(0 < x < 10) # True (équivaut à 0 < x and x < 10)
print(1 <= x <= 5) # False
Écrire une fonction categorie(age) qui renvoie :
"enfant" si l'âge est strictement inférieur à 12 ;"adolescent" entre 12 et 17 inclus ;"adulte" à partir de 18.def categorie(age):
if age < 12:
return "enfant"
elif age <= 17:
return "adolescent"
else:
return "adulte"
Remarque : pas besoin de tester age >= 12 dans le elif car si on y arrive, c'est que la première condition est fausse (donc age >= 12).
Écrire une fonction type_triangle(a, b, c) qui prend trois longueurs et renvoie :
"invalide" si l'inégalité triangulaire n'est pas vérifiée ;"équilatéral" si les trois côtés sont égaux ;"isocèle" si exactement deux côtés sont égaux ;"quelconque" sinon.def type_triangle(a, b, c):
if a + b <= c or a + c <= b or b + c <= a:
return "invalide"
elif a == b == c:
return "équilatéral"
elif a == b or b == c or a == c:
return "isocèle"
else:
return "quelconque"
Principe : on teste d'abord le cas invalide (inégalité triangulaire stricte). Ensuite, l'ordre est important : un triangle équilatéral est aussi isocèle, il faut donc tester l'équilatéral en premier.
Vérification :
type_triangle(3, 3, 3) renvoie "équilatéral" ;type_triangle(3, 3, 5) renvoie "isocèle" ;type_triangle(1, 1, 3) renvoie "invalide" car $1 + 1 ⩽ 3$.Sans exécuter le code, déterminer la valeur affichée pour chaque ligne :
a, b, c = 5, 0, -3
print(a > 0 and b > 0) # Ligne 1
print(a > 0 or b > 0) # Ligne 2
print(not (a > 0)) # Ligne 3
print(a > 0 and not b == 0) # Ligne 4
print(c < 0 or a + c > 10) # Ligne 5
print(not (a > 0 and c > 0)) # Ligne 6
False : a > 0 est True mais b > 0 est False, et True and False = False.True : a > 0 est True, et True or False = True.False : a > 0 est True, donc not True = False.False : not b == 0 vaut not True = False, et True and False = False.True : c < 0 est True, Python n'évalue même pas la suite (évaluation paresseuse).True : a > 0 and c > 0 vaut True and False = False, donc not False = True. C'est la loi de De Morgan : $\overline{A \cap B} = \overline{A} \cup \overline{B}$.Le tarif d'un trajet en bus dépend de l'âge et du statut :
Écrire une fonction tarif_bus(age, etudiant) où etudiant est un booléen.
def tarif_bus(age, etudiant):
if age < 4:
return 0
elif age <= 17 or etudiant:
return 0.80
else:
return 1.60
Vérification :
tarif_bus(3, False) renvoie 0 ;tarif_bus(15, False) renvoie 0.80 ;tarif_bus(22, True) renvoie 0.80 ;tarif_bus(30, False) renvoie 1.60.