[Python of Hikari-] Chapitre 05-08 Syntaxe de contrôle (tandis que l'instruction-une autre syntaxe itérative-)

[Python] Chapitre 05-08 while instruction - une autre syntaxe itérative -

Tout d'abord, jetez un œil au programme ci-dessous (pas besoin d'écrire un programme)

for i in range(10):
    print(i, end=' ')

print('Sortie de traitement')

Il utilise une instruction for pour générer des valeurs de 0 à 9. Jusqu'à présent, il était décrit comme ** pour instruction **, mais cette fois, parlons d'exprimer le programme ci-dessus avec ** instruction while **.

Comment écrire une déclaration while

Généralement, l'instruction while est écrite comme suit.

tandis que l'expression conditionnelle:
Contenu du traitement

Les conditions sont telles que ** i <10 ** et ** i == 0 **, que j'ai écrites dans l'instruction if. Exprimons en fait le programme d'instruction for ci-dessus en utilisant l'instruction while. Créez un fichier avec le nom de fichier 05-08-01.py </ font> dans chap05 </ font> et utilisez le code suivant S'il vous plait écrivez.

05-08-01.py


i = 0  ##Initialiser la valeur de i avec 0

while i < 10:  ##Traiter lorsque i est inférieur à 10
    print(i, end=' ')
    i+=1  ##Ajouter 1 à i

print('Sortie de traitement')


05-08-01.py Résultat de l'exécution

[Résultat de l'exécution] </ font> 0 1 2 3 4 5 6 7 8 9 Traitement terminé

Il semble que le programme soit un peu plus long que l'instruction for. Suivons le processus.

Tout d'abord, dans le cas de l'instruction ** while **, lors du traitement itératif, initialisez avec ** i = 0 **. En d'autres termes, nous devons décider quoi faire avec la première valeur. Dans l'instruction ** for **, la partie 0 de la plage (0, 10) est le début, donc le 0 du début est décidé. De plus, dans le cas d'une instruction while, ** i = 0 ** peut être défini sur ** le nombre de répétitions **.

Ensuite, passons au contenu de l'instruction while.

** [1ère boucle] </ font> ** Avec ** while i <10: **, le processus est répété lorsque l'expression conditionnelle est ** True **. Maintenant, puisque ** i = 0 **, l'expression conditionnelle devient ** 0 <10 ** et ** True **, donc le traitement de l'instruction while commence.

Ensuite, la valeur de ** i ** (** i = 0 **) est sortie, puis ** i + = 1 **. Si cela ** i + = 1 ** n'est pas fait, le jugement de condition lorsque ** [2nd loop] </ font> ** sera le même ** 0 < Cela devient 10 **, et cela devient une boucle infinie, et vous ne pouvez pas sortir indéfiniment de l'instruction while. N'oubliez donc pas d'ajouter i par 1 avec ** i + = 1 **. (À ce stade, ** i = 1 **.)

** [2ème boucle] </ font> ** Maintenant, puisque ** i = 1 **, l'expression conditionnelle devient ** 1 <10 ** et ** True **, donc le traitement de l'instruction while commence.

Ensuite, la valeur de ** i ** (** i = 1 **) est sortie, et ** i + = 1 ** est défini. (À ce stade, ** i = 2 **.)

<font color = # 0cc> <Répétez l'instruction while lorsque la condition est i <10. > </ font>

** [10e boucle] </ font> ** Maintenant, puisque ** i = 9 **, l'expression conditionnelle devient ** 9 <10 ** et ** True **, donc le traitement de l'instruction while commence.

Ensuite, la valeur de ** i ** (** i = 9 **) est sortie, et ** i + = 1 ** est défini. (À ce stade, ** i = 10 **.)

** [11e boucle] </ font> ** Maintenant, puisque ** i = 10 **, l'expression conditionnelle devient ** 10 <10 **, ** False ** et quitte l'instruction while.

Ensuite, ** print ('end of processing') **, qui est en dehors de l'instruction while, est affiché.

Ceci est illustré dans l'organigramme ci-dessous.

image.png

Calculez la somme à l'aide de l'instruction while

Comme mentionné dans l'instruction for, par exemple, pour trouver la somme des nombres pairs pour les entiers compris entre 1 et 100, nous avons calculé comme suit. (Pas besoin d'écrire un programme)

sum = 0
for i in range(1, 101):
    if i % 2 == 0:
        sum += i

print(f'Total:{sum}')


Résultat de l'exécution

Total: 2550

Je ne pense pas qu'il soit nécessaire d'expliquer en particulier, mais on juge si c'est pair à la partie de l'instruction if, et si ** i ** est pair, il est ajouté.

Exprimons cela avec ** instruction while ** au lieu de instruction for. Créez un fichier avec le nom de fichier 05-08-02.py </ font> dans chap05 </ font> et utilisez le code suivant S'il vous plait écrivez.

05-08-02.py


sum = 0
i = 1

while i <= 100:
    if i % 2 == 0:
        sum += i  ##Calculez la somme ici
    
    i += 1 ##Augmenter la valeur de i de 1
print(f'Total:{sum}')

Tout d'abord, pour trouver la somme, l'initialisation de la valeur de ** sum ** est la même que dans l'instruction for. Si la somme n'est pas définie sur 0, elle ne sera pas calculée correctement.

Ensuite, ** 1 ** est remplacé par ** i **, et la condition de l'instruction while est jugée. Alors que ** i ** vaut 100 ou moins, la condition de l'instruction while devient ** True ** et le processus est répété, donc l'ajout est effectué pendant ce temps.

** [1ère boucle] </ font> ** Puisque ** i = 1 **, la condition de l'instruction if est ** False **, le processus d'ajout à la somme n'est pas effectué et le processus de l'instruction if est ignoré. Et n'oubliez pas d'ajouter 1 à ** i **. Si vous ne le faites pas, vous vous retrouverez avec une boucle infinie, comme mentionné ci-dessus. (À ce stade ** somme = 0, i = 2 **)

** [2ème boucle] </ font> ** Puisque ** i = 2 **, la condition de l'instruction if est ** True **, et le processus d'ajout à la somme est effectué dans l'instruction if. Puis ajoutez 1 à i pour obtenir i = 3. (À ce stade ** somme = 2, i = 3 **)

** [3e boucle] </ font> ** Puisque ** i = 3 **, la condition de l'instruction if est ** False **, le processus d'ajout à la somme n'est pas effectué et le processus de l'instruction if est ignoré. Puis ajoutez 1 à i pour obtenir i = 4. (À ce stade ** somme = 2, i = 4 **)

<font color = # 0cc> <Répétez l'instruction while lorsque la condition est i <= 100. > </ font>

** [100e boucle] </ font> ** Puisque ** i = 100 **, la condition de l'instruction if est ** True **, et le processus d'ajout à la somme est effectué dans l'instruction if. Puis ajoutez 1 à i pour obtenir i = 101. (À ce stade ** somme = 2550, i = 101 **)

** [101e boucle] </ font> ** Ensuite, la condition de l'instruction while est ** 101 <= 100 **, et ** False **, donc l'instruction while est quittée.

Et enfin, la fonction d'impression génère la valeur de somme.

Problème de pratique

Nous avons préparé des exercices. Veuillez essayer de le résoudre. De plus, veuillez utiliser le nom de fichier spécifié dans [] et le créer dans chap05 </ font>. Vous pouvez spécifier n'importe quel nom de variable que vous souhaitez. [05-08-p1.py] [1] Créez un programme qui calcule la somme des nombres impairs d'entiers de 1 à 100 en utilisant l'instruction while. Le résultat est 2500.

[05-08-p2.py] [2] Créez un programme qui calcule la moyenne des éléments de la liste ** ls = [3, 5, 4, 10, 7, 8] ** en utilisant l'instruction while. Le résultat est 6,166666666666667. (Indice: ** ls [0] ** peut récupérer des éléments tels que ** 3 **, ** ls [1] ** peut récupérer des éléments tels que ** 5 **…, c'est-à-dire ** ls [i] * Vous pouvez récupérer l'élément sous la forme *. Vous pouvez également obtenir la longueur de la liste avec ** len (ls) **, afin de pouvoir répéter le processus entre ces longueurs.) [05-08-p3.py] Créez le programme de [3] et [2] en utilisant ** for statement **.

finalement

J'ai mentionné l'instruction while, mais le programme est un peu plus long que l'instruction for. Cependant, ce qu'ils font est la même chose, donc je pense que c'était facile à comprendre. La prochaine fois, j'aimerais expliquer brièvement les techniques souvent utilisées dans les déclarations while.

Revenir à [Lien de la table des matières]

Recommended Posts