Maison >développement back-end >Tutoriel Python >Utilisation d'instructions else dans les structures de boucle for et break de Python
Nous prenons généralement l'utilisation des instructions else dans les structures if comme une évidence. Cependant, le puissant sucre syntaxique de Python permet d'utiliser l'instruction else dans les boucles for et while ! Exemples Conseils pour utiliser les instructions else dans les structures
Il peut également y avoir une clause else après un certain temps ou une boucle for en Python. La fonction est que si la condition dans la boucle for n'est pas satisfaite, l'instruction else le fera. être exécuté à la fin.
for i in range(5): if i == 1: print 'in for' else: print 'in else' print 'after for-loop' # in for # in else # after for-loop
Mais nous avons constaté que la condition if a été établie pendant la boucle et que le contenu de l'instruction else a finalement été exécuté. Pourquoi est-ce ?
D'accord, regardons maintenant le programme suivant :
for i in range(5): if i == 1: print 'in for' break else: print 'in else' print 'after for-loop' # in for # after for-loop
Nous avons ajouté une pause dans le if, c'est Parce que else est exécutée après for, mais l'instruction else ne sera exécutée que lorsque la boucle for se termine normalement (la boucle ne se termine pas par break). Lorsque la boucle est interrompue par une instruction break, else n'est pas exécuté.
for/else est équivalent au code suivant Vous pouvez ajouter un indicateur similaire au langage C :
found = False for i in range(5): if i == 1: found = True print 'in for' if not found: print 'not found' print 'after for-loop' # in for # after for-loop
et l'instruction for. De même, l'utilisation de la clause else dans l'instruction while est la même. Le bloc else est exécuté lorsque la boucle se termine normalement et que la condition de boucle n'est pas établie.
Nous connaissons déjà l'instruction conditionnelle if-else, mais en Python, for-else est utilisé pour gérer les échecs de traversée.
Par exemple, nous voulons implémenter une telle fonction : trouver le plus grand nombre carré parfait dans (81, 99) et l'afficher s'il ne le trouve pas, afficher une invite.
Si vous utilisez la boucle for de C pour l'implémenter, vous devez déterminer manuellement si le parcours de la boucle for échoue :
#include <iostream> #include<math.h> using namespace std; int main() { int i; float n; for(i=99;i>81;i--) { n=sqrt((float)i); if(n==int(n)) { cout<<i; break; } } if(i==81) //边界判断 cout<<"didn't find it!"<<endl; return 0; }
Cette fonction peut être facilement implémentée à l'aide du for-else de Python :
from math import sqrt for n in range(99,81,-1): root = sqrt(n) if root == int(root): print n break else: print"Didn't find it!"
Exécuter else uniquement une fois la boucle for complètement terminée . S'il saute de la pause au milieu, il sautera avec les autres.
Ce qui nécessite une attention particulière, c'est que s'il y a une instruction if dans for, l'indentation de else doit être alignée avec for. Si elle est alignée avec if, elle deviendra une instruction if-else, qui produira. erreurs inattendues comme suit :
from math import sqrt for n in range(99,81,-1): root = sqrt(n) if root == int(root): print n break else: print"Didn't find it!"
Bien que l'utilisation de for-else enregistre deux lignes de code et facilite la lecture, il est facile de le confondre avec si-sinon. Il semble qu’il ne soit pas couramment utilisé dans la pratique, mais qu’il soit plus susceptible d’être manipulé manuellement.
Pour plus d'articles liés à l'utilisation des instructions else dans les structures for et break loop de Python, veuillez prêter attention au site Web PHP chinois !