[Hikari-Python] Chapitre 05-10 Syntaxe de contrôle (interruption et poursuite du traitement itératif)

[Python] Chapitre 05-10 Suspendre et poursuivre le traitement itératif

Jusqu'à présent, j'ai écrit un traitement itératif en utilisant des instructions for et while. En fait, vous pouvez interrompre de force ce processus au milieu ou continuer le processus en fonction des conditions. À cette fin, il existe respectivement ** interrompre le traitement ** et ** continuer le traitement **.

Parlons de ces processus. Jetons un œil tout en améliorant le programme dans Chapitre 05-09. Tout d'abord, jetons à nouveau un coup d'œil au programme du chapitre 05-09. Vérifiez à nouveau le problème. "Nous allons créer un programme pour calculer le ** total des points ** et les ** points moyens ** des résultats des tests des élèves de la classe. Cependant, le nombre d'élèves dans la classe change d'une classe à l'autre, nous ne savons donc pas combien. Entrez les points dans l'ordre, et si une valeur négative est entrée, créez un programme pour calculer le total des points et la moyenne des points jusqu'à ce point. Les points sont 100 points sur 100. "

i = 1  #i est le nombre de personnes dans la classe
total = 0 #Ajouter le total des points de la classe au total
score = 0 #Score étudiant

while score >= 0:
    total += score
    score = int(input(f'{i}Veuillez saisir le score de la personne (le score est de 100 points sur 100. La saisie d'une valeur négative met fin au processus):'))
    i += 1

i -= 1 #Puisqu'il y a une personne de plus, nous la réduirons d'une personne
print(f'Score total:{total}')
print(f'Score moyen:{total/i}')


05-09-01.py Résultat d'exécution

[Résultat de l'exécution] </ font> Veuillez saisir le score de la première personne (le score est de 100 points sur 100. Le processus se termine lorsque vous saisissez une valeur négative): 90 Veuillez saisir le score de la deuxième personne (le score est de 100 points sur 100. Le processus se termine lorsque vous saisissez une valeur négative): 75 Veuillez saisir le score de la troisième personne (le score est de 100 points sur 100. Le processus se termine lorsque vous saisissez une valeur négative): 83 Veuillez saisir le score de la 4ème personne (le score est de 100 points sur 100. Le processus se termine lorsque vous saisissez une valeur négative): -1 Note totale: 248 Note moyenne: 62,0

déclaration break

En regardant le programme ci-dessus plus tôt, à la fin, il y a ** "i- = 1 # Puisqu'il y a une personne de plus, nous la réduirons d'une personne" **. Pour certaines personnes, je suis curieux de soustraire celui-ci. (Cela peut réduire la lisibilité du programme.) J'aimerais réfléchir à un moyen d'éliminer ce processus.

Maintenant, dans le programme ci-dessus, il est jugé s'il faut continuer ou terminer le processus d'entrée de score en fonction de la condition de l'instruction ** while. ** ** Vous pouvez également le faire dans l'instruction ** while **, et si la valeur d'entrée est un nombre négatif, vous pouvez quitter de force l'instruction ** while **. Dans ce cas, utilisez ** break **.

Jetons un œil au programme suivant. Créez un fichier avec le nom de fichier samp05-10-01.py </ font> dans chap05 </ font> et utilisez le code suivant S'il vous plait écrivez.

samp05-10-01.py


i = 1  #i est le nombre de personnes dans la classe
total = 0 #Ajouter le total des points de la classe au total
score = 0 #Score étudiant

#Puisque la condition de while est Vrai, ce sera une boucle infinie telle quelle
while True:
    total += score
    score = int(input(f'{i}Veuillez saisir le score de la personne (le score est de 100 points sur 100. La saisie d'une valeur négative met fin au processus):'))

    #Si le score de la valeur d'entrée est un nombre négatif, break quitte l'instruction while.
    if score < 0:
        print(f'{score}Est entré, de sorte que l'instruction while est forcée.')
        break

    i += 1

#i -= 1 #← Le traitement ici peut être éliminé
print(f'Score total:{total}')
print(f'Score moyen:{total/i}')


résultat de l'exécution de samp05-10-01.py

[Résultat de l'exécution] </ font> Veuillez saisir le score de la première personne (le score est de 100 points sur 100. Le processus se termine lorsque vous saisissez une valeur négative): 90 Veuillez saisir le score de la deuxième personne (le score est de 100 points sur 100. Le processus se termine lorsque vous saisissez une valeur négative): 75 Veuillez saisir le score de la troisième personne (le score est de 100 points sur 100. Le processus se termine lorsque vous saisissez une valeur négative): 83 Veuillez saisir le score de la 4ème personne (le score est de 100 points sur 100. Le processus se termine lorsque vous saisissez une valeur négative): -1 Puisque -1 a été entré, il est quitté de force de l'instruction while. Note totale: 248 Note moyenne: 62,0

Premièrement, il y a deux points distinctifs. La première est la section ** while True: **. À l'origine, les opérateurs de comparaison tels que ** == ** et ** <= ** sont utilisés pour cette condition, mais l'écriture de ** True ** a déjà écrit le résultat de l'opérateur de comparaison. Je vais. Par conséquent, tel quel, il est toujours ** True **, ce qui signifie que ce sera une boucle infinie. J'ai besoin d'en sortir d'une manière ou d'une autre. Cette méthode est la deuxième caractéristique décrite ci-dessous.

Le second est ** break ** à l'intérieur de l'instruction ** while **, puis à l'intérieur de l'instruction ** if **. Puisque la condition de l'instruction if est ** score <0 **, la condition "si un nombre négatif est entré" est utilisée ici pour réussir ** break **. Cette ** pause ** vous permet de sortir de force de l'instruction ** while **.

Ensuite, la valeur totale et la valeur moyenne des derniers points saisis sont calculées. Et vous pouvez éliminer le processus de ** "i- = 1" ** que vous avez écrit au tout début.

continue déclaration

Le programme que j'ai écrit plus tôt présente un autre inconvénient. Faisons attention à la partie ** "Le score est de 100 points sur 100." ** dans l'énoncé du problème ci-dessus. Maintenant, lors de la saisie, je saisissais pour ne pas dépasser 100 points. Cependant, comme ce score est entré par des humains, il est possible de saisir ** 900 ** en tapant par erreur beaucoup de 0 au lieu de saisir ** 90 ** dans le score.

Si ce programme est un programme de notation, il est toujours correct, mais que se passe-t-il s'il s'agit d'un système de gestion de l'argent? Ce sera un incident grave (*) </ font>.

(*) </ font> ** Incident ** signifie une interruption inattendue du système ** ou une dégradation de la qualité **. Cela a une signification similaire à la difficulté. C'est un terme souvent utilisé dans le domaine de la gestion des services informatiques.

Il existe une ** instruction continue ** pour éviter cela. Je voudrais encore améliorer le programme précédent, mais je le ferai séparément. Créez un fichier avec le nom de fichier samp05-10-02.py </ font> dans chap05 </ font> et utilisez le code suivant S'il vous plait écrivez. De plus, l'ajout des points saisis (** total + = score **) est réécrit afin qu'il soit effectué au bout de deux si jugements.

samp05-10-02.py


i = 1  #i est le nombre de personnes dans la classe
total = 0 #Ajouter le total des points de la classe au total
score = 0 #Score étudiant

#Puisque la condition de while est Vrai, ce sera une boucle infinie telle quelle
while True:
    score = int(input(f'{i}Veuillez saisir le score de la personne (le score est de 100 points sur 100. La saisie d'une valeur négative met fin au processus):'))

    #Si le score de la valeur d'entrée est un nombre négatif, break quitte l'instruction while.
    if score < 0:
        print(f'{score}Est entré, de sorte que l'instruction while est forcée.')
        break

    #Si le score de la valeur d'entrée est supérieur à 100, le processus démarre au début de l'instruction while sans compter le nombre de personnes i.
    if score > 100:
        print('Une valeur supérieure à 100 a été saisie pour le score, alors saisissez-la à nouveau.')
        continue

    total += score  #Cette fois, le traitement de l'addition de score après les deux ci-dessus si les jugements
    i += 1

#i -= 1 #← Le traitement ici peut être éliminé
print(f'Score total:{total}')
print(f'Score moyen:{total/i}')


résultat de l'exécution de samp05-10-02.py

[Résultat de l'exécution] </ font> Veuillez saisir le score de la première personne (le score est de 100 points sur 100. Le processus se termine lorsque vous saisissez une valeur négative): 90 Veuillez saisir le score de la deuxième personne (le score est de 100 points sur 100. Le processus se termine lorsque vous saisissez une valeur négative): 75 Veuillez saisir le score de la troisième personne (le score est de 100 points sur 100. Le processus se termine lorsque vous saisissez une valeur négative): 833 Une valeur supérieure à 100 a été saisie pour le score, alors saisissez-la à nouveau. Veuillez saisir le score de la troisième personne (le score est de 100 points sur 100. Le processus se termine lorsque vous saisissez une valeur négative): 83 Veuillez saisir le score de la 4ème personne (le score est de 100 points sur 100. Le processus se termine lorsque vous saisissez une valeur négative): -1 Puisque -1 a été entré, il est quitté de force de l'instruction while. Note totale: 248 Note moyenne: 62,0

Dans l'instruction ** if ** de l'instruction while, il est jugé si une valeur supérieure à 100 points est entrée ou non à la place de ** score> 100 **. Et si une valeur supérieure à 100 est entrée, l'instruction ** continue ** recommencera à partir du début de l'instruction while.

finalement

Cette fois, j'ai abordé ** instruction break ** et ** instruction continue **. Certains programmeurs ont du mal à maintenir ces deux parce que certaines personnes trouvent qu'ils sont moins mobiles. Sur le site de développement proprement dit, lors de son utilisation, il sera nécessaire de procéder au développement tout en en discutant lors des réunions.

De plus, comme je l'ai mentionné plus tôt, il y a des moments où vous faites une erreur en entrant dans un programme. En fait, il y a encore quelque chose à corriger dans l'entrée précédente, et si vous entrez non seulement la plage numérique mais aussi une chaîne de caractères, une erreur se produira. Vous devez également vous demander quoi faire lorsqu'une telle erreur se produit. Il est bon de se rappeler que créer un mécanisme qui ne fait pas de telles erreurs s'appelle ** infaillible **. (Souvent demandé lors de l'examen d'ingénieur en informatique)

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

Recommended Posts