Mis a jour le 2025-04-14, 12:10

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