Python의 while 스테이트먼트에서의 Else 절
Python에서는 다음 코드가 합법이라는 것을 알게 되었습니다.제 질문은 왜일까요?특별한 이유가 있나요?
n = 5
while n != 0:
print n
n -= 1
else:
print "what the..."
이할때 이 구문을 .if
/else
while
★★★★★★★★★★★★★★★★★」for
루프를 else
이렇게 해서, 이 를 해결하려면 , 이 문제를 해야 합니다.else
로 if
두 사람을 짝짓기 위한 의도라고 가정하면요이 질문에서는 구문 오류가 발생하지 않은 이유와 결과 코드가 의미하는 바를 설명합니다.「IndegrationError」가 표시되는 것도 참조해 주세요. 구문 오류가 보고된 경우 어떻게 수정해야 합니까?
else
은 ''가 '있다'고 할 수 있습니다.while
거짓 당신이 가 if if if ifbreak
루프에서 벗어나거나 예외가 발생할 경우 실행되지 않습니다.
한 가지 방법은 조건에 관한 if/else 구성입니다.
if condition:
handle_true()
else:
handle_false()
는 루프 구성과 유사합니다.
while condition:
handle_true()
else:
# condition is false now, handle and go on with the rest of the program
handle_false()
예를 들면 다음과 같습니다.
while value < threshold:
if not process_acceptable_value(value):
# something went wrong, exit the loop; don't pass go, don't collect 200
break
value = update(value)
else:
# value >= threshold; pass go, collect 200
handle_threshold_reached()
else
정상적으로 블록을 종료하거나 루프 조건을 누르거나 트라이 블록 바닥에서 떨어지면 절이 실행됩니다.다음 경우 실행되지 않습니다.break
★★★★★★★★★★★★★★★★★」return
블록 밖으로 나오거나 예외를 발생시킵니다.루프뿐만 아니라 블록 시도에도 사용할 수 있습니다.
일반적으로는 루프를 조기에 종료하는 장소에서 발견됩니다.루프의 끝에서 벗어나는 것은 예기치 않은/비정상적인 경우입니다.예를 들어, 값을 찾는 목록을 루프하는 경우:
for value in values:
if value == 5:
print "Found it!"
break
else:
print "Nowhere to be found. :-("
에에에 to Is there a specific reason?
여기에서는, 복수의 루프 레벨로부터 해방하는, 1개의 흥미로운 애플리케이션이 있습니다.
동작 방법은 다음과 같습니다.외부 루프는 끝에 브레이크가 있기 때문에 한 번만 실행됩니다.다만, 내부 루프가 완료하면(제수 없음), else 스테이트먼트에 도달해, 외부 브레이크에는 도달하지 않습니다.이렇게 하면 내부 루프의 브레이크가 한쪽이 아닌 양쪽 루프에서 분리됩니다.
for k in [2, 3, 5, 7, 11, 13, 17, 25]:
for m in range(2, 10):
if k == m:
continue
print 'trying %s %% %s' % (k, m)
if k % m == 0:
print 'found a divisor: %d %% %d; breaking out of loop' % (k, m)
break
else:
continue
print 'breaking another level of loop'
break
else:
print 'no divisor could be found!'
다에 while
★★★★★★★★★★★★★★★★★」for
'',else
않으면 실행되지 않습니다.다,,break
사용되었습니다.
대부분의 경우 더 나은 방법(함수로 압축하거나 예외를 발생)이 있지만 이 방법은 효과적입니다.
while-condition이 false로 평가되면 else-clause가 실행됩니다.
매뉴얼에서 다음 항목을 참조하십시오.
while 문은 식이 참인 한 반복 실행에 사용됩니다.
while_stmt ::= "while" expression ":" suite ["else" ":" suite]
이 식을 그것이 첫 스위트가 이 식이), " " " " 입니다.false(거짓말)
else
구(존재하는 경우)가 실행되고 루프가 종료됩니다.A
break
할 때 루프가 되지 않습니다.else
조항의 스위트. a.continue
첫 번째 스위트에서 실행된 문은 스위트의 나머지 부분을 건너뛰고 식 테스트로 돌아갑니다.
제 답변은 언제 사용할 수 있는가에 초점을 맞출 것입니다.
언뜻 보면 사용법은 별 차이가 없는 것 같습니다.
while CONDITION:
EXPRESSIONS
print 'ELSE'
print 'The next statement'
그리고.
while CONDITION:
EXPRESSIONS
else:
print 'ELSE'
print 'The next statement'
냐하 because는print 'ELSE'
는 항상 것처럼 두 경우 모두 '두 경우 모두'가 실행되어 있습니다).while
루프가 종료되었거나 실행되지 않았습니다).
그러면 문이 실행되지 않을 때만 다릅니다. 코드 블록 안에 있을 때에요
In [17]: i = 0
In [18]: while i < 5:
print i
if i == 2:
break
i = i +1
else:
print 'ELSE'
print 'The next statement'
....:
0
1
2
The next statement
가 다른 경우:
In [19]: i = 0
In [20]: while i < 5:
print i
if i == 2:
break
i = i +1
print 'ELSE'
print 'The next statement'
....:
0
1
2
ELSE
The next statement
return
위의 두 가지 경우에 동일한 영향을 미치기 때문에 이 범주에 속하지 않습니다.
하지 않습니다할 때 다음 핸들러(제외)에입니다. 왜냐하면 예외 발생 시 다음 코드가 실행되는 곳은 예외 핸들러(블록 제외)에 있고 코드는 다음 시간 내에 있기 때문입니다.else
또는 뒤에 .while
절이 실행되지 않습니다.
else 구는 while-condition이 false가 되었을 때만 실행됩니다.
다음은 몇 가지 예입니다.
예 1: 처음에는 조건이 false이므로 else-clause가 실행됩니다.
i = 99999999
while i < 5:
print(i)
i += 1
else:
print('this')
출력:
this
예 2: while-condition i < 5
않다i == 3
루프가 끊어지기 때문에 else-module은 실행되지 않습니다.
i = 0
while i < 5:
print(i)
if i == 3:
break
i += 1
else:
print('this')
출력:
0
1
2
3
예 3: while-condition i < 5
가 되어 버렸습니다.i
5
그래서 else-module이 실행되었습니다.
i = 0
while i < 5:
print(i)
i += 1
else:
print('this')
출력:
0
1
2
3
4
this
오래된 질문인건 알지만...
레이먼드 헤팅거가 말했듯이, 그것은 불려야 한다.while/no_break
while/else
.
이 부분을 보시면 쉽게 이해하실 수 있을 것 같습니다.
n = 5
while n > 0:
print n
n -= 1
if n == 2:
break
if n == 0:
print n
루프할 때 하는 것이 루프할 때 를 확인할 수 .else
그리고 그 수표를 없애버리세요.
n = 5
while n > 0:
print n
n -= 1
if n == 2:
break
else: # read it as "no_break"
print n
.while/no_break
그 구문이 훨씬 더 이해가 됩니다.
else:
loop이 그 되었을 에서는 while loop이 조건을 충족하지 않게 되었을 때).n != 0
거짓으로 하다
출력은 다음과 같습니다.
5
4
3
2
1
what the...
루프가 끊어지지 않은 상태에서 else가 실행됩니다.
'도망자'라는 비유로 생각하는 게 좋아요
"엘스"는 트랙의 시작과 끝 중 어느 쪽에서 시작했든 상관없이 결승선을 통과하는 것과 같습니다.중간 어디선가 끊어진 경우에만 "syslog"가 실행되지 않습니다.
runner_at = 0 # or 10 makes no difference, if unlucky_sector is not 0-10
unlucky_sector = 6
while runner_at < 10:
print("Runner at: ", runner_at)
if runner_at == unlucky_sector:
print("Runner fell and broke his foot. Will not reach finish.")
break
runner_at += 1
else:
print("Runner has finished the race!") # Not executed if runner broke his foot.
주요 사용 사례는 중첩된 루프에서 이 분리를 사용하거나 루프가 중단되지 않은 경우에만 일부 문을 실행하는 것입니다(단절이 비정상적인 상황이라고 생각함).
예를 들어 변수나 try/catch를 사용하지 않고 내부 루프를 브레이크아웃하는 방법을 다음에 나타냅니다.
for i in [1,2,3]:
for j in ['a', 'unlucky', 'c']:
print(i, j)
if j == 'unlucky':
break
else:
continue # Only executed if inner loop didn't break.
break # This is only reached if inner loop 'breaked' out since continue didn't run.
print("Finished")
# 1 a
# 1 b
# Finished
단일 링크 리스트에서 요소 x를 검색해야 한다고 가정합니다.
def search(self, x):
position = 1
p =self.start
while p is not None:
if p.info == x:
print(x, " is at position ", position)
return True
position += 1
p = p.link
else:
print(x, "not found in list")
return False
다른 조건이 실패하더라도 도움이 되길 바랍니다!
Python의 'while else::' 구문을 더 잘 사용하는 것은 'while'에서 루프가 실행되지 않으면 'else' 문이 실행되는 것입니다.아래의 코드를 같은 결과로 사용할 수 있기 때문에 현재의 작동 방식은 의미가 없습니다.
n = 5
while n != 0:
print n
n -= 1
print "what the..."
제가 알기로는 어떤 언어로든 루프에 other를 추가하는 주된 이유는 사용자가 제어할 수 있는 반복기가 켜져 있지 않은 경우입니다.서버상에 반복기가 있고, 그 다음에 100개의 데이터 레코드를 가져오라는 신호를 보낸다고 가정합니다.수신된 데이터의 길이가 100인 한 루프가 계속되도록 해야 합니다.적으면 한 번 더 하고 끝내야 돼요.마지막 반복을 제어할 수 없는 상황이 많이 있습니다.이러한 경우 다른 항목을 추가할 수 있는 옵션이 있으면 모든 것이 훨씬 쉬워집니다.
언급URL : https://stackoverflow.com/questions/3295938/else-clause-on-python-while-statement
'source' 카테고리의 다른 글
도커: Windows 호스트에서 MariaDB/MySQL 부팅 실패 (0) | 2022.09.16 |
---|---|
Vue with Vuex: 스토어 내에서 컴포넌트를 주입/이젝트할 수 있습니까? (0) | 2022.09.16 |
MariaDB 삽입 위치 (0) | 2022.09.16 |
이클립스의 숨겨진 특징 (0) | 2022.09.16 |
여러 줄 문자열의 올바른 들여쓰기입니까? (0) | 2022.09.16 |