파이썬 자료구조/알고리즘 09 : for ~ else문 응용하기
if 조건문과 따라다니는 else구문을 파이썬에서는 반복문과 함께 사용할 수 있습니다.
for문이 중간에 break로 빠져나오지 않고 완전히 끝까지 실행되었을 경우 else문의 명령어가 실행됩니다. 또한 for문이 아얘 실행되지 않는 경우에도 else문이 실행됩니다.
for와 else는 같은 라인에 쓰도록 합니다.
다음은 for~else문을 사용하지 않은 코드입니다.
lst = [1, 3, 6, 4, 2]
flag = 0
for i in lst:
if i > 5:
flag += 1
print('반복문 탈출')
break
if flag != 0:
print('5보다 큰 수 발견')
else:
print('5보다 큰 수 없음')
반복문 탈출
5보다 큰 수 발견
lst리스트에 5보다 큰 수가 발견되면 flag값을 주고 반복문 밖에서 flag값이 존재하면 '5보다 큰 수를 발견'이라는 문자열을 출력하도록 합니다.
for~else문을 사용하면 다음과 같이 코드를 간결하게 줄일 수 있습니다.
lst = [1, 3, 2, 3, 2]
for i in lst:
if i > 5:
print('5보다 큰 수 있음')
break
else:
print('5보다 큰 수 없음')
5보다 큰 수 없음
for문이 중간에 break로 빠져나오지 않고 완전히 끝까지 실행되었을 경우 else문의 명령어가 실행됩니다.
i > 5를 만족하는 lst의 원소가 없기 때문에 for문은 끝까지 돌아가고, 이후에 else문의 명령어를 실행합니다.
다음은 1부터 입력받은 num까지의 소수를 출력하는 코드입니다.
num = int(input())
for n in range(2, num+1):
for i in range(2, n):
if n % i == 0:
break
else:
print(n)
>> num : 100
2
3
5
7
(...)
83
89
97
소수는 1과 자기 자신을 제외한 어떤 정수로도 나눠지지 않는 숫자입니다. 따라서 첫 번째 for문에서 1을 범위에서 제외시켰습니다.
첫 번째 반복문에서 n이 5에 도달했을 경우, 두 번째 반복문은 n의 값을 2~n-1까지의 값으로 나누도록 합니다.(1과 자기 자신으로 나눠지는 것을 방지했습니다.) 이때 나머지가 0이 되는 값이 존재한다면 n은 합성수가 되므로 두 번째 반복문을 빠져나와 첫 번째 반복문을 이어서 진행하도록 합니다.
만약 두번쨰 반복문을 완전히 돌았는데도 나머지가 0이 되는 값을 찾지 못했다면 else문을 실행합니다. 이때 n은 소수이므로 print()로 출력합니다.
'파이썬 > 자료구조와 알고리즘' 카테고리의 다른 글
[파이썬/자료구조] 큐(queue) 덱(deque) (0) | 2022.02.20 |
---|---|
파이썬 자료구조/알고리즘 10 : 소수 찾기 알고리즘 (0) | 2022.02.10 |
파이썬 자료구조/알고리즘 08 : 객체에 따른 인수, 매개변수의 교환 방식 (0) | 2022.02.09 |
파이썬 자료구조/알고리즘 07 : 리스트와 튜플의 스캔과 역순으로 배열하기 (0) | 2022.02.07 |
파이썬 자료구조/알고리즘 06 : 기본 자료구조, 배열3 (0) | 2022.02.06 |