본문 바로가기
TIL (Today I Learned)/Python

[Python] While loop

by 둥굴프 2023. 4. 2.
파이썬에 대한 기본적인 이해를 위해 작성했습니다

 

while 반복문은 지정된 조건이 충족되는 동안 코드 블록을 반복한다.

 

파이썬에서 while문의 특징은, 반복이 시작되기 전에 조건을 테스트한다는 것

즉, 코드 블록이 실행될 것이라는 보장이 없다.

(한 번도 실행되지 않을 수 있다)

예를 들어서, javascript에서는 do while문을 사용하면 코드를 무조건 한번 실행하는 것을 보장해 준다.

 

만약, 코드블록을 무조건 한번 실행하려면 True를 사용하면 최소 한 번 이상 실행되는 것이 보장된다.

min_length = 2

while True:
    name = input('이름을 입력하시오 :')
    if len(name) >= min_length  and name.isprintable() and name.isalpha():
        break

print('안녕하세요 {0} 님'.format(name))

 

else?

while문에는 else절도 있다.

while 루프가 break절을 만나지 않고 종료되면 else절이 시작된다.

이를 루프가 정상적으로 종료되었다고 표현한다.

 

다음 코드를 살펴보자

l = [1, 2, 3]
val = 10

found = False
idx = 0
while idx < len(l):
    if l[idx] == val:
        found = True
        break
    idx += 1
    
if not found:
    l.append(val)
print(l)

break절을 만났는지 확인하기 위해서 found라는 flag를 지정했다.

하지만, 위에서 말한 else절을 사용하면 다음과 같이 더 쉽게 코드를 작성할 수 있다.

l = [1, 2, 3]
val = 10

idx = 0
while idx < len(l):
    if l[idx] == val:
        break
    idx += 1
else:
    l.append(val)

print(l)

 

Try statements

while반복문에서 예외처리를 하기 위해서 try문을 사용할 수 있다.

try는 except와 같이 사용한다.

try 코드 블록 수행 중 오류가 발생하면 except 블록이 수행된다.

하지만 오류가 발생하지 않는다면 except 블록은 수행되지 않는다.

 

또한, try문에는 finally절을 사용할 수 있다. finally절은 try문 수행 도중 예외 발생 여부에 상관없이 항상 수행된다.

보통 finally절은 사용한 리소스를 close 해야 할 때에 많이 사용한다.

 

위에서 설명한 else절을 함께 다음과 같은 코드를 작성할 수 있다.

a = 0
b = 5

while a < 3:
    print('-------------')
    a += 1
    b -= 1
    try:
        res = a / b
    except ZeroDivisionError:
        print('{0}, {1} - division by 0'.format(a, b))
        res = 0
        break
    finally:
        print('{0}, {1} - always executes'.format(a, b))
        
    print('{0}, {1} - main loop'.format(a, b))
else:
    print('\n\nno errors were encountered!')
    
'''
-------------
1, 4 - always executes
1, 4 - main loop
-------------
2, 3 - always executes
2, 3 - main loop
-------------
3, 2 - always executes
3, 2 - main loop


no errors were encountered!
'''

 

break나 continue가 있어도 finally절은 실행된다.

 

 

'TIL (Today I Learned) > Python' 카테고리의 다른 글

[Python] Classes  (0) 2023.04.02
[Python] For loop  (0) 2023.04.02
[Python] Function  (0) 2023.03.29
[Python] ternary operator  (0) 2023.03.29
[Python] 식별자 이름 짓는 방법  (0) 2023.03.29

댓글