Utilisation d'instructions else dans les structures de boucle for et break de Python

高洛峰
Libérer: 2017-03-02 16:09:17
original
2770 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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&#39;t find it!"<<endl; 
 return 0; 
}
Copier après la connexion

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&#39;t find it!"
Copier après la connexion

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&#39;t find it!"
Copier après la connexion

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 !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal