for - else 구문
프로그래밍을 할 때 else
는 if
와 함께 오는 것이 국룰이다. 하지만 파이썬에서는 for
문과도 함께 사용할 수 있는데, 이 포스팅에서는 문제를 풀면서 그 방법에 대해 알아보고자 한다.
아래의 문제는 프로그래머스의 파이썬을 파이썬답게 > flag OR for-else 문제이다.
위의 문제에서 핵심은 수를 곱해나가다가 제곱 수가 되는 게 하나라도 있다면 "found"를 출력하는 것이다.
import math
mul = 1
flag = False
for _ in range(5):
num = int(input())
mul *= num
if int(math.sqrt(mul)) == math.sqrt(mul):
flag = True
break
if flag:
print("found")
else:
print("not found")
따라서 코드를 이렇게 짰다. for문을 돌면서 제곱 수가 되는 게 하나라도 있다면 flag를 True로 변경하고 for문을 빠져나간다.
for문이 끝날 때까지도 제곱 수가 되는 것이 없다면 flag는 결국 False로 남는다.
마지막으로 flag의 값에 따라 출력을 해준다.
일반적인 언어라면 이렇게 코딩을 하는 게 맞겠지만, 파이썬에서는 for-else
를 사용할 수 있기에 좀 더 간결하고 보기 좋게 코드를 수정할 수 있다. for-else
는 for문이 중간에 break 등으로 끊기지 않고 끝까지 갔을 때 else문에 있는 코드를 수행한다.
위의 코드에서는 조건을 만족시키면 break되므로 마지막까지도 끊기지 않는다면 "not found"를 바로 출력해주면 된다.
for-else
문을 이용한 코드는 다음과 같다.
import math
mul = 1
for _ in range(5):
num = int(input())
mul *= num
if int(math.sqrt(mul)) == math.sqrt(mul):
print("found")
break
else:
print("not found")
코드가 훨씬 짧고 의미를 알아보기도 쉬워졌다.
요약
요약하자면, for-else
는 for문이 중간에 break 되었는지 되지 않았는지 판별해야 하는 경우에 사용하며 else에는 for문이 끝까지 중지되지 않았을 때 실행할 코드를 넣어주면 된다.