> Les bases > Le langage > Instructions
Instructions
conditions :
if x < 0:
print('negative')
elif x == 0:
print('zero')
else:
print('positive')
boucle while :
while b < 10:
print(b)
Boucle for :
for x in myList:
print(x, len(x))
for x in 'abcdef':
print(x)
for i in range(len(a)):
print(i, x[i])
Attention, on ne peut pas changer la variable d'itération dans une boucle for. Le bloc suivant ne marche pas, la variable i n'est pas affectée (ne saute pas la valeur 7 comme on pourrait le penser) :
for i in range(10):
print(i)
if i == 6:
i = 8
utiliser une boucle while si on veut faire ce genre de chose.
For avec un else : le else est exécuté seulement si la boucle de termine normalement (sans break) :
for ...:
...
else:
...
Attention, on ne peut pas comme dans d'autres langages faire en même temps une affectation et un test, du genre : while (y = x - 1):, c'est syntaxiquement incorrect !
Attention : il ne faut pas modifier une liste sur laquelle on est en train de boucler !
myList = ['a', 'b', 'c']
for x in myList:
x = 'z'
la liste en sortie vaut toujours ['a', 'b', 'c'] !
myList = ['a', 'b', 'c']
for x in myList:
if x == 'b':
myList.insert(0, 'z')
part dans une boucle infinie. Si on veut faire cela, boucler sur une copie de la liste :
myList = ['a', 'b', 'c']
for x in myList[:]:
if x == 'b':
myList.insert(0, 'z')
donne ['z', 'a', 'b', 'c'].
- par contre, pas de problème pour modifier la liste si on boucle sur les index :
myList = ['a', 'b', 'c']
for i in range(len(myList)):
myList[i] = 'z'
produit bien la liste ['z', 'z', 'z']
Boucle for sur une liste renversée :
for x in reversed(myList):
print(x)
break et continue :
- comme en C, pour les boucles while et for.
- break : sort directement de la boucle.
- continue : retourne directement à l'itération suivante en sautant ce qui est est après.
- pas possible en python de sortir directement de 2 boucles imbriquées avec un break : il faut utiliser un flag par exemple.
else à la suite d'un for ou d'un while : exécuté après la boucle si sortie normale (mais pas si sortie avec un break) :
for i in range(0, 10):
print(i)
else:
print('fin')
pass : ordre vide qui ne fait rien, mais qui est nécessaire si boucle ou condition dont le contenu est vide, car il faut au moins une instruction :
while True:
pass
Pour forcer le garbage collection quand on a libéré de la mémoire, utiliser le package gc : import gc; gc.collect()
Niveau de récursion limite :
- sys.getrecursionlimit() : donne le niveau de récursion limite.
- sys.setrecursionlimit(100000) : permet de changer le niveau de récursion limite.
Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert