J'espère que vous vous en tirez bien avec la série de rafraîchissements lisses Python. Permettez-moi de vous rappeler rapidement que le but de cette série est de vous enseigner de manière fluide les principaux concepts que vous devez maîtriser pour progresser dans votre parcours d'apprentissage Python..
Vous souvenez-vous de ce jour où vous avez dû arroser 10 fleurs? Ou quand tu devais remplir 20 tasses d'eau? Vous faisiez la même tâche pour chaque fleur ou tasse d’eau. Une telle répétition s'appelle en boucle en programmation.
Pour donner une idée de l’importance de la lecture en boucle, supposons que vous écriviez un programme qui devrait imprimer la même déclaration 100 000 fois. Oseriez-vous répéter cette affirmation 100 000 fois, manuellement?! Je ne le ferai pas et je pense que vous ne le ferez pas non plus. Je suis sûr que vous avez beaucoup plus important à faire. Voici donc la beauté de la boucle.
Sans plus tarder, voyons la façon dont Python boucle.
Dans ce type d'itération, tant que le tester évalue à vrai
, l'instruction ou le bloc d'instructions continue de s'exécuter. Ainsi, le contrôle conserve en boucle retour au début de l’instruction (c’est-à-dire un test), et gérera le contrôle de la ou des prochaines déclarations si le test a pour résultat faux
. Si le test a toujours la valeur true, dans ce cas, il s’agit d’un test boucle infinie.
La syntaxe générale pour l'instruction while est très simple et se présente comme suit:
While test: # instructions de test de boucle # corps de la boucle
Rappelez-vous le terme de boucle infinie que j'ai mentionné il y a quelque temps? C’est-à-dire, la boucle qui ne s’arrête jamais puisque le test est toujours vrai? Voyons un exemple d'une telle boucle:
tandis que 1: affiche "Je suis une boucle infinie. Ctrl-C pour m'arrêter!
La valeur 1
est une autre forme de la valeur booléenne vrai
. Ainsi, si vous écrivez en vrai
, ce sera équivalent à l'instruction while de l'exemple. Comme vous le remarquerez, vous continuerez à avoir des relevés d'impression affichés à l'infini.
Pour terminer la boucle, cliquez simplement sur Control-C sur votre clavier. La figure ci-dessous montre comment le programme fonctionnait indéfiniment et était interrompu par le clavier (c.-à-d. Control-C)..
Nous allons maintenant arroser nos 10 belles fleurs avec Python. Cela peut être fait comme suit:
fleurs = 1 tandis que les fleurs <= 10: print 'Water the flower # ' + str(flowers) flowers = flowers + 1
Le résultat du programme peut être montré dans la figure suivante:
Avant d’aller de l’avant, laissez-moi clarifier certains points du script Python ci-dessus. Vous vous demandez peut-être quoi str ()
est et pourquoi nous l’avons utilisée ici. Basé sur la documentation:
Renvoie une chaîne contenant une représentation joliment imprimable d'un objet. Pour les chaînes, cela retourne la chaîne elle-même. La différence avecrepr (objet)
est-cestr (objet)
ne tente pas toujours de renvoyer une chaîne acceptable poureval ()
; son but est de retourner une chaîne imprimable. Si aucun argument n'est donné, retourne la chaîne vide,"
.
En d'autres termes, str ()
retournera une représentation imprimable sous forme de chaîne de l'objet. Mais pourquoi? Voyons ce que Python se plaindrait si nous n'utilisions pas str ()
:
Traceback (appel le plus récent en dernier): fichier "test.py", ligne 3, dansprint 'Water the flower #' + flowers TypeError: impossible de concaténer des objets 'str' et 'int'
Donc, le problème est que str
ne peut pas être concaténé avec int
.
L’autre point que je veux mentionner est l’utilisation de fleurs = fleurs + 1
. Si nous n'utilisions pas une telle déclaration, nous aurions une boucle infinie où la valeur des fleurs resterait 1
, et donc toujours moins que dix
(toujours vrai).
le pour-boucle
est une itération qui parcourt les éléments d'un séquence ordonnée tels que des listes, des clés de dictionnaire, des n-uplets, des chaînes de caractères, etc..
Le python pour-boucle
La syntaxe ressemble à ceci:
pour var en séquence: instruction (s)
Où var
contiendra les éléments de la séquence (liste, tuple) que le pour-boucle
itérera à travers, de telle sorte que le pour-boucle
body sera exécuté pour chaque élément de la séquence.
Temps pour quelques exemples sur le pour-boucle
!
languages = ['arabe', 'anglais', 'français', 'espagnol'] counter = 0 pour lang in languages: print 'Cette langue se trouve dans la liste:' + languages [counter] counter = counter + 1
Que se passe-t-il si on initialise compteur = 1
? Dans ce cas, vous obtiendrez l'erreur ci-dessous car, à un moment de la boucle, l'index sera en dehors de la liste:
Traceback (appel le plus récent en dernier): fichier "test.py", ligne 4, dansprint 'Cette langue est dans la liste:' + langues [compteur] IndexError: index de la liste hors limites
Un petit quiz. Quelle serait la sortie de la boucle suivante? (indice: rappelez-vous que Python commence à compter à partir de 0
):
pour x dans la plage (1,5): print x
Les sous-sections ci-dessous montreront certaines déclarations fréquemment utilisées dans les boucles.
La déclaration Pause
provoque la fin de la boucle et l'exécution du programme se poursuit à l'instruction suivante.
Un exemple d'utilisation Pause
est montré ci-dessous. Il montre comment le programme se ferme (Pause
) la boucle lorsque le si-déclaration
évalue à vrai
.
nombres = [1,2,3,4,5,6,7,8,9,10] valeur = 1 alors que valeur en chiffres: si valeur == 5: impression de rupture 'I \' m # '+ str (valeur ) valeur = valeur + 1 print 'Désolé, je devais quitter la boucle lorsque la valeur est devenue 5'
Cette instruction retourne le contrôle au début de la boucle, en ignorant toutes les instructions de la boucle venant après. Voyons l'exemple suivant:
nombres = [1,2,3,4,5,6,7,8,9,10] valeur = 1 alors que valeur en chiffres: si valeur < 5: print 'I\'m # ' + str(value) value = value + 1 continue print 'I\'m in the if-condition, why are you ignoring me?!' elif value == 5: break print ('I have reached the last statement in the program and need to exit')
Avez-vous trouvé comment continuer
travaux? Que pensez-vous que la sortie de ce script Python serait? Allez-y, essayez-le.
Cette déclaration est un peu délicate. le passer
déclaration est un nul
déclaration, c'est qu'il ne fait rien. Mais pourquoi l'utilisons-nous? Supposons que vous écriviez un programme et que, à un moment donné, vous ne sachiez pas ce qui devrait aller dans la pour-déclaration
par exemple, comme suit:
nombres = [1,2,3,4,5,6,7,8,9,10] valeur = 1 pour la valeur en chiffres: # ne sachant pas quoi faire ici encore imprimée ('J'ai atteint le dernier relevé du programme et besoin de quitter ')
Si vous essayez d'exécuter le programme, vous obtiendrez l'erreur suivante:
Fichier "test.py", ligne 6, print ('J'ai atteint la dernière instruction du programme et je dois quitter') ^ IndentationError: attend un bloc en retrait
Donc, Python se plaint qu'il devrait y avoir une déclaration à l'intérieur de la pour-boucle
. Si vous tapez passer
dans le pour-boucle
, le résultat du programme sera:
J'ai atteint la dernière déclaration du programme et je dois quitter
De cela, nous pouvons conclure que passer
agit comme un espace réservé pour permettre au programme de s'exécuter même si vous n'avez pas encore décidé quelle instruction requise doit figurer à un endroit du code.
le autre
instruction est explicite, et contiendra simplement un bloc d'instructions à exécuter lorsque la boucle se termine normalement, et non par un Pause
. Voici un exemple d'utilisation:
nombres = [1,2,3] valeur = 1 en valeur en chiffres: print 'I \' m # '+ str (valeur) valeur = valeur + 1 else: print' I \ 'partie du bloc d'instructions else' print 'Je fais aussi partie du bloc d'instructions else'
Pour conclure cet article et imaginer l’importance de la mise en boucle, je me souviens de la date à laquelle j’ai dû effectuer ces opérations d’analyse d’images sur chaque pixel d'une image.
Faire cela sur une image avec la taille 256x256
Cela signifie seulement que je devais répéter les opérations 65 536 fois (ce qui correspond au nombre de pixels)! Boucle à la rescousse!