source

Python의 while 스테이트먼트에서의 Else 절

factcode 2022. 9. 16. 23:01
반응형

Python의 while 스테이트먼트에서의 Else 절

Python에서는 다음 코드가 합법이라는 것을 알게 되었습니다.제 질문은 왜일까요?특별한 이유가 있나요?

n = 5
while n != 0:
    print n
    n -= 1
else:
    print "what the..."

이할때 이 구문을 .if/elsewhile ★★★★★★★★★★★★★★★★★」for 루프를 else이렇게 해서,를 해결하려면 ,문제 해야 합니다.elseif두 사람을 짝짓기 위한 의도라고 가정하면요이 질문에서는 구문 오류가 발생하지 않은 이유와 결과 코드가 의미하는 바를 설명합니다.「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가 되어 버렸습니다.i5그래서 else-module이 실행되었습니다.

i = 0

while i < 5:
    print(i)
    i += 1
else:
    print('this')

출력:

0
1
2
3
4
this

오래된 질문인건 알지만...

레이먼드 헤팅거가 말했듯이, 그것은 불려야 한다.while/no_breakwhile/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

반응형