우리는 일반적으로 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'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'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't find it!"
for-else를 사용하면 두 줄의 코드가 절약되고 읽기 쉬워지지만 if-와 혼동되기 쉽습니다. 또 다른. 실제로는 일반적으로 사용되지 않는 것으로 보이지만 수동으로 처리할 가능성이 더 높습니다.
Python의 for 및 break 루프 구조에서 else 문 사용과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트에 주목하세요!