> 백엔드 개발 > 파이썬 튜토리얼 > Python의 for 및 break 루프 구조에서 else 문 사용

Python의 for 및 break 루프 구조에서 else 문 사용

高洛峰
풀어 주다: 2017-03-02 16:09:17
원래의
2799명이 탐색했습니다.

우리는 일반적으로 if 구조에서 else 문을 사용합니다. 그러나 Python의 강력한 구문 설탕을 사용하면 for 및 while 루프에서 else 문을 사용할 수 있습니다. 예 구조에서 else 문 사용에 대한 팁

Python에서는 while 또는 for 루프 뒤에 else 절이 있을 수도 있습니다. 마지막에 처형됩니다.

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
로그인 후 복사

그런데 루프 중에 if 조건이 설정되고 결국 else 문의 내용이 실행되는 것을 발견했습니다.

자, 이제 다음 프로그램을 살펴보겠습니다:

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
로그인 후 복사

if에 중단을 추가했습니다. 왜냐하면 else for 이후에 실행되지만, else 문은 for 루프가 정상적으로 종료될 때만 실행됩니다(루프는 break로 끝나지 않습니다). break 문에 의해 루프가 중단되면 else는 실행되지 않습니다.

for/else는 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
로그인 후 복사

는 for와 유사합니다. 문, while 문에서 else 절의 사용법은 동일합니다. 루프가 정상적으로 종료되고 루프 조건이 성립되지 않을 때 else 블록이 실행됩니다.

우리는 이미 if-else 조건문에 익숙하지만 Python에서는 순회 실패를 처리하기 위해 for-else를 사용합니다.

예를 들어, (81, 99)에서 가장 큰 완전제곱수를 찾아서 출력하는 함수를 구현하고 싶습니다. 찾을 수 없으면 프롬프트를 출력합니다.

C++ for 루프를 사용하여 구현된 경우 for 루프 순회가 실패하는지 수동으로 확인해야 합니다.


#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; 
}
로그인 후 복사

이 함수는 Python의 for-else를 사용하여 쉽게 구현할 수 있습니다.

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!"
로그인 후 복사

else는 for 루프가 완전히 완료된 후에만 실행됩니다. break가 튀어나오면 else도 튀어나옵니다.

특별히 주의해야 할 점은 for에 if 문이 있는 경우 else의 들여쓰기가 for와 정렬되어야 한다는 점입니다. if와 정렬되면 if-else 문이 되어 결과가 생성됩니다. 다음과 같은 예기치 않은 오류가 발생합니다.

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!"
로그인 후 복사

for-else를 사용하면 두 줄의 코드가 절약되고 읽기 쉬워지지만 if-와 혼동되기 쉽습니다. 또 다른. 실제로는 일반적으로 사용되지 않는 것으로 보이지만 수동으로 처리할 가능성이 더 높습니다.

Python의 for 및 break 루프 구조에서 else 문 사용과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트에 주목하세요!


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿