파이썬에 대한 기본적인 이해를 위해 작성했습니다
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 |
댓글