Structure de contrôle
if (test) elif else
conversion implicite en booléen
while (test) [break/continue] else
for (iter) [break/continue] else
susucre : a = x if cond else y
IF - ELIF - ELSE
Structure de if - elif -else
# instruction avant le if
if test_1:
# instruction A
elif test_2:
# instruction B
elif test_3:
# instruction C
else:
# instruction D
# instruction après le if
[1]:
print('start')
a = 1
if a == 1:
print('travail')
print('end')
start
travail
end
[2]:
print('start')
a = 2
if a == 1:
print('travail')
print('end')
start
end
[3]:
print('start')
a = 1
if a == 1:
print('travail 1')
else:
print('travail 2')
print('end')
start
travail 1
end
[4]:
print('start')
a = 1
if a == 2:
print('travail 1')
else:
print('travail 2')
print('end')
start
travail 2
end
[5]:
a = 1
if a == 1:
print('travail 1')
elif a == 2:
print('travail 2')
else:
print('dodo')
travail 1
[6]:
a = 2
if a == 1:
print('travail 1')
elif a == 2:
print('travail 2')
else:
print('dodo')
travail 2
[7]:
a = 3
if a == 1:
print('travail 1')
elif a == 2:
print('travail 2')
else:
print('dodo')
dodo
FOR
En python, for
permet d’itérer sur les éléments d’une séquence (ex: list
, tuple
, dict
).
[8]:
ma_liste = ['toto', 42, 3.14]
for elem in ma_liste:
print(elem)
toto
42
3.14
[9]:
mon_dict = {'un': 42, 2: 'bonjour', 'trois': 3.14}
for elem in mon_dict:
print(elem)
un
2
trois
[10]:
for elem in 'python':
print(elem)
p
y
t
h
o
n
Structure de for - continue / break - else
# instruction avant le for
for elem in sequence:
# debut des instructions
if test_break:
# on arrete tout
break
if test_continue:
# on passe à l'itération suivante
continue
# suite des instructions
# pas vue si continue
else:
# executer si on est sorti de la boucle sans break
# instruction après le for
[11]:
#liste = range(15)
liste = range(10)
result = []
for elem in liste:
if elem > 10:
result = 'interdit de dépasser 10'
break
if elem % 2:
# ignorer les impairs
continue
result.append(elem) # un peu comme 'result += [elem]' mais bien mieux
else:
print("tout s'est bien passé")
print(result)
tout s'est bien passé
[0, 2, 4, 6, 8]
Remarque Ce dernier exemple présente de gros défauts:
changer la nature de
result
selon le contexteelse: print(...)
est un mode de communication très faible
WHILE
Structure de while - continue / break - else
# instruction avant le while
while test_boucle:
# debut des instructions
if test_break:
# on arrete tout
break
if test_continue:
# on passe à l'itération suivante
continue
# suite des instructions
# pas vue si continue
else:
# executer si on est sorti de la boucle sans break
# instruction après le while
[12]:
# compteur
a = 0
while a < 10:
a += 1
print(a, end=' ')
1 2 3 4 5 6 7 8 9 10
[13]:
# compteur pair
a = 0
while a < 10:
a += 1
if a % 2:
continue
print(a, end=' ')
2 4 6 8 10
[14]:
def indice(liste, valeur):
"renvoie le premier indice tq liste[indice] == valeur"
i = 0
while i < len(liste):
if liste[i] == valeur:
result = i
break
i += 1
else:
result = None
return result
ma_liste = ['zero', 'un', 'deux', 'trois']
[15]:
indice(ma_liste, 'deux')
[15]:
2
[16]:
indice(ma_liste, 'quatre')
En pratique, on préférera l’utilisation du for
(éventuellement couplé à un if
) qui ne risque pas de partir dans des boucles infinies.
Par exemple, le code suivant tournera à l’infini (et on n’aime pas ça) :
a = 0
while a < 10:
if a % 2:
continue
print(a, end=' ')
a += 1
[17]:
# compteur pair
for a in range(25):
if a > 10:
break
if a % 2:
continue
print(a, end=' ')
0 2 4 6 8 10