Python >> Tutoriel Python >  >> Python

Comment écrire une boucle For en Python

La boucle for est l'un des outils de base de Python. Vous les rencontrerez probablement au tout début de votre parcours Python. Dans cet article, je vais vous donner un bref aperçu de la boucle for en Python et montrer avec des exemples comment vous pouvez l'utiliser pour itérer sur différents types de séquences.

Qu'est-ce qu'une boucle For en Python ?

Python est un langage de programmation puissant qui peut être utilisé pour à peu près n'importe quoi, et la boucle for est l'un de ses outils fondamentaux. Vous devez bien le comprendre et le maîtriser pour créer des applications en Python.

Une boucle for vous permet de itérer sur une séquence qui peut être soit une liste, un tuple, un ensemble, un dictionnaire ou une chaîne . Vous l'utilisez si vous devez exécuter le même code pour chaque élément d'une séquence.

Pour expliquer la syntaxe de la boucle for, nous allons commencer par un exemple très basique. Disons que nous voulons garder une trace des pays d'origine de nos étudiants. Donc, nous avons la liste new_students_countries , qui contient les pays d'origine de nos trois nouveaux étudiants.

Nous utilisons la boucle for pour accéder à chaque pays de la liste et l'imprimer :

new_students_countries = ['Great Britain', 'Germany', 'Italy']
for country in new_students_countries:
    print(country)
	
Output:
Great Britain
Germany
Italy

Ici, pour chaque pays de la liste new_students_countries , on exécute le print() commande. En conséquence, nous obtenons le nom de chaque pays imprimé dans la sortie.

Passons en revue la syntaxe du for boucle :

  1. Il commence par le mot-clé for, suivi d'un nom de valeur que nous attribuons à l'élément de la séquence (country dans ce cas).
  2. Ensuite, le mot-clé in est suivi du nom de la séquence que nous voulons itérer.
  3. La section d'initialisation se termine par ": ”.
  4. Le corps de la boucle est indenté et inclut le code que nous voulons exécuter pour chaque élément de la séquence.

Entraînez-vous à écrire des boucles for avec le cours Python Basics. Partie 1. Il contient 95 exercices interactifs qui couvrent des sujets Python de base, y compris les boucles.

Maintenant que nous connaissons la syntaxe, passons à un exemple où l'utilité du for boucle est plus apparente.

Continuons avec notre exemple. Nous avons la liste new_students_countries avec les pays d'origine des nouveaux étudiants. Nous avons maintenant aussi la liste students_countries avec les pays d'origine des étudiants existants. Nous utiliserons le for boucle pour vérifier chaque pays en new_students_countries pour voir si nous avons déjà des étudiants du même pays :

students_countries = ['Belgium', 'Czech Republic', 'France', 
                      'Germany', 'Hungary', 'Ireland',
'Netherlands', 'Spain']
new_countries = 0
for country in new_students_countries:
    if country not in students_countries:
        new_countries += 1
print('We have students from', new_countries, 'new countries.')

Output:
We have students from 2 new countries.

Comme vous pouvez le voir, nous commençons par initialiser la variable new_countries avec la valeur 0. Ensuite, on itère sur la liste new_students_countries , et vérifier pour chaque pays de cette liste s'il est dans la liste students_countries . Si ce n'est pas le cas, c'est un nouveau pays pour nous, et nous augmentons new_countries par 1.

Puisqu'il y a trois éléments dans new_students_countries , la boucle for s'exécute trois fois. Nous constatons que nous avons déjà des étudiants allemands, tandis que la Grande-Bretagne et l'Italie sont de nouveaux pays pour notre communauté étudiante.

Pour que les boucles itèrent sur différents types de séquences

Pour les boucles et les ensembles

Comme mentionné précédemment, les boucles for fonctionnent également avec des ensembles . En fait, les ensembles peuvent être encore mieux adaptés à notre exemple précédent ; si nous avons plusieurs nouveaux étudiants du même nouveau pays, nous ne voulons pas qu'ils soient comptés plusieurs fois comme si nous avions plus de nouveaux pays que nous n'en avons réellement.

Considérons donc l'ensemble new_students_countries avec les pays pour quatre nouveaux étudiants, dont deux viennent d'Italie. Sauf pour remplacer une liste par un ensemble, nous pouvons utiliser le même code que ci-dessus :

new_students_countries = {'Great Britain', 'Germany', 'Italy', 
'Italy'}
new_countries = 0
for country in new_students_countries:
    if country not in students_countries:
        new_countries += 1
print('We have students from', new_countries, 'new countries.')

Output:
We have students from 2 new countries.

Parce que nous utilisons un ensemble au lieu d'une liste, nous avons correctement compté que seuls deux nouveaux pays sont ajoutés à notre communauté étudiante, même si nous avons trois étudiants venant de nouveaux pays.

Pour les boucles et les tuples

Nous pouvons également itérer sur un tuple avec la boucle for. Par exemple, si nous avons un tuple avec les noms des nouveaux étudiants, nous pouvons utiliser le code suivant pour demander le pays d'origine de chaque étudiant :

new_students = ('James Bond', 'Adele Schmidt', 'Leonardo Ferrari')
for name in new_students:
    print('Where does', name, 'come from?')
	
Output:
Where does James Bond come from?
Where does Adele Schmidt come from?
Where does Leonardo Ferrari come from?

Pour les boucles et les dictionnaires

Now, we can iterate over a dictionary to answer the above question for each new student:
new_students_countries_dict = {'James Bond': 'Great Britain', 
                               'Adele Schmidt': 'Germany', 
                               'Leonardo Ferrari': 'Italy'}
for key, value in new_students_countries_dict.items():
    print(key, ' is from ', value, '.', sep = '')
	
Output:
James Bond is from Great Britain.
Adele Schmidt is from Germany.
Leonardo Ferrari is from Italy.

Il existe de nombreuses façons différentes d'itérer sur un dictionnaire; c'est un sujet pour une discussion séparée en soi. Dans cet exemple, je parcoure les éléments du dictionnaire, chacun étant essentiellement des tuples. Donc, je spécifie dans l'en-tête de la boucle de décompresser ces tuples en clé et valeur. Cela me donne accès à la fois aux clés du dictionnaire et aux valeurs du dictionnaire dans le corps de la boucle.

Si vous souhaitez rafraîchir vos connaissances sur les dictionnaires et autres structures de données, envisagez de rejoindre notre cours Python Data Structures in Practice.

Pour les boucles et les chaînes

Bien que l'itération sur des séquences telles que des listes, des ensembles, des tuples et des dictionnaires semble être une tâche triviale, il est souvent très excitant pour les débutants en Python d'apprendre que les chaînes sont également des séquences , et par conséquent, peut également être itéré en utilisant une boucle for.

Voyons un exemple de cas où vous devrez peut-être itérer sur une chaîne.

Nous avons besoin que chaque nouvel étudiant crée un mot de passe pour son compte étudiant. Disons que nous avons une exigence selon laquelle au moins un caractère du mot de passe doit être en majuscule. Nous pouvons utiliser la boucle for pour parcourir tous les caractères d'un mot de passe afin de vérifier si l'exigence est remplie :

uppercase = False
password = "i@mHappy"
for char in password:
    if char.isupper():
        uppercase = True
print(uppercase)

Output:
True

Ici, on initialise la variable uppercase comme False . Ensuite, nous itérons sur chaque caractère (char ) de la chaîne password pour vérifier s'il est en majuscule. Si la condition est remplie, on change le uppercase variable à True .

Pour que les boucles itèrent sur une plage

Si vous connaissez d'autres langages de programmation, vous avez probablement remarqué que la boucle for en Python est différente. Dans d'autres langages, vous itérez généralement dans une plage de nombres (de 1 à n, de 0 à n, de n à m), et non sur une séquence. Cela dit, vous pouvez également le faire en Python en utilisant le range() fonction.

Pour les boucles avec plage()

Tout d'abord, vous pouvez utiliser le range() fonction de répéter quelque chose un certain nombre de fois. Par exemple, supposons que vous souhaitiez créer un nouveau mot de passe (password_new ) composé de 8 caractères aléatoires. Vous pouvez utiliser le for suivant boucle pour générer 8 caractères aléatoires et les fusionner en une chaîne appelée password_new :

import random
import string
letters = string.ascii_letters
password_new = ''
for i in range(8):
    password_new += random.choice(letters)
print(password_new)

Output:
CvKYaEqi

En plus de l'arrêt requis argument (ici, 8), le range() la fonction accepte également le démarrage facultatif et étape arguments. Avec ces arguments, vous pouvez définir les numéros de début et de fin de la séquence ainsi que la différence entre chaque numéro de la séquence. Par exemple, pour obtenir tous les nombres pairs de 4 à 10 inclus, vous pouvez utiliser le for suivant boucle :

for i in range(4, 11, 2):
    print(i)
	
Output:
4
6
8
10

Notez que nous utilisons 11, et non 10, comme borne supérieure. Le range() la fonction n'inclut pas la limite supérieure dans la sortie .

Vous pouvez également utiliser le range() fonction pour accéder au numéro d'itération dans le corps du for boucle. Par exemple, supposons que nous ayons une liste des noms d'étudiants triés par leurs résultats d'examen, du plus élevé au plus bas. Dans le corps de notre for boucle, nous voulons accéder non seulement aux valeurs de la liste mais aussi à leur index. Nous pouvons utiliser le range() fonction pour parcourir la liste n fois, où n est la longueur de la liste. Ici, on calcule n par len(exam_rank) :

exam_rank = ['Adele', 'James', 'Leonardo']
for i in range(len(exam_rank)):
    print(exam_rank[i], ' gets the #', i+1, ' result.', sep='')

Output:
Adele gets the #1 result.
James gets the #2 result.
Leonardo gets the #3 result.

Notez que nous utilisons i+1 pour imprimer des résultats significatifs, puisque l'index en Python commence à 0.

Pour les boucles avec enumerate()

Une manière "Pythonic" de suivre la valeur de l'index dans la boucle for nécessite l'utilisation du enumerate() fonction. Il vous permet d'itérer sur des listes et des tuples tout en accédant à l'index de chaque élément dans le corps du for boucle :

exam_rank = ['Adele', 'James', 'Leonardo']
for place, student in enumerate(exam_rank, start = 1):
    print(student, ' gets the #', place, ' result.', sep='')
	
Output:
Adele gets the #1 result.
James gets the #2 result.
Leonardo gets the #3 result.

Lors de la combinaison de la boucle for avec enumerate() , nous avons accès au décompte actuel (place dans notre exemple) et la valeur respective (student dans notre exemple) dans le corps de la boucle. Facultativement, nous pouvons spécifier l'argument du nombre de départ pour qu'il commence à 1 comme nous l'avons fait, ou à partir de tout autre nombre qui a du sens dans votre cas.

Il est temps de s'entraîner aux boucles for en Python !

Ceci est un aperçu général de la boucle Python for juste pour vous montrer rapidement comment cela fonctionne et quand vous pouvez l'utiliser. Cependant, il y a beaucoup plus à apprendre, et plus important encore, vous avez besoin de beaucoup de pratique pour maîtriser le Python for boucle.

Une bonne façon de commencer à pratiquer est avec les cours Python qui peuvent être gratuits ou payants. Le cours Python Basics. La partie 1 est l'une des meilleures options pour les débutants en Python. Il couvre tous les sujets de base, y compris le for boucle, le while boucle, instructions conditionnelles et bien d'autres. Avec 95 exercices interactifs, ce cours vous donne une base solide pour devenir un puissant utilisateur de Python. Voici un aperçu du cours Python Basics pour ceux qui souhaitent en savoir plus.

Si vous êtes déterminé à devenir programmeur Python, je vous recommande de commencer par la piste Learn Programming with Python. Il comprend 5 cours avec des centaines d'exercices interactifs, couvrant non seulement les bases mais aussi les algorithmes et fonctions intégrés. Ils peuvent vous aider à écrire des applications optimisées et de vrais jeux Python.

Merci d'avoir lu et bon apprentissage !