Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python 반복문 완벽 가이드 – for문과 while문 사용법 총정리

루프(반복문)는 모든 프로그래밍·스크립팅 언어에서 빼놓을 수 없는 핵심 기능입니다. 동일한 작업을 여러 번 실행할 수 있는 능력은 프로그래밍 언어의 가장 기본이 되는 요소이기 때문입니다.

Python에서는 for 루프와 while 루프를 통해 반복 작업을 수행합니다. 이 글에서는 두 루프의 사용법을 다양한 예제와 함께 자세히 살펴보겠습니다.

Python for 루프

Python의 for 루프는 여러 가지 방식으로 활용할 수 있으며, 가장 대표적이고 흔하게 쓰이는 용도는 리스트 같은 컬렉션(collection)의 요소를 하나씩 순회(iteration)하는 것입니다.

기본 문법

for i in collection:
    statement

컬렉션은 리스트, 집합(set), range 등 어떤 것이든 될 수 있으며, i는 순회 중인 각 요소의 값을 차례로 담는 변수입니다.

my_list = [1, 2, 3, 4, 5]
for i in my_list:
    print("Value is:", i)

실행 결과:

Value is 1
Value is 2
Value is 3
Value is 4
Value is 5

리스트가 첫 번째 요소부터 마지막 요소까지 순서대로 순회되는 것을 확인할 수 있습니다.

range() 함수와 함께 사용하는 for 루프

Python의 range() 메서드는 특정 범위 내에서 일련의 숫자 시퀀스를 생성합니다. 순회할 리스트는 없지만 특정 횟수만큼 반복 작업을 실행하고 싶을 때 유용합니다.

for i in range(5):
    print(i)

실행 결과:

0
1
2
3
4

참고: 값은 0부터 5가 아니라 0부터 4까지 출력됩니다.

range() 함수는 기본적으로 0부터 시작해 1씩 증가하며, 지정한 숫자 바로 앞에서 끝나는 숫자 시퀀스를 반환합니다.

시작값과 증가값을 직접 지정하고 싶다면 아래처럼 인자를 세 개 넘기면 됩니다.

for i in range(10, 30, 5):
    print(i)

실행 결과:

10
15
20
25

위 예제에서는 10부터 시작해 5씩 증가하며, 30에 도달하기 전인 25에서 종료됩니다.

else 절과 함께 사용하는 for 루프

for 루프에서 else 키워드는 루프가 끝까지 정상적으로 실행된 후 마지막에 실행할 코드 블록을 지정합니다.

for i in range(6):
    print(i)
else:
    print("Finished looping.")

실행 결과:

0
1
2
3
4
5
Finished looping.

참고: if 문에서 else 블록은 조건이 거짓일 때만 실행되지만, for 루프에서는 break로 강제 종료되지 않는 한 else 블록이 항상 실행됩니다.

중첩 for 루프(Nested Loop)

for 루프 안에 또 다른 for 루프를 넣을 수 있는데, 이를 중첩 루프(nested loop)라고 부릅니다.

바깥쪽 루프(외부 루프)가 한 번 반복될 때마다 안쪽 루프(내부 루프)가 전체적으로 한 사이클씩 실행됩니다.

예제:

numbers = [1, 2, 3]
chars = ["a", "b", "c"]

for i in numbers:
    for y in chars:
        print(i, y)

실행 결과:

1 a
1 b
1 c
2 a
2 b
2 c
3 a
3 b
3 c

Python while 루프

while 루프는 주어진 조건이 참(True)인 동안 명령문 집합을 계속해서 실행합니다.

예를 들어:

i = 1
while i < 5:
    print("Hello world")
    i = i + 1

주의: 위 예제처럼 반드시 조건 변수 i의 값을 증가시켜야 합니다. 그렇지 않으면 조건이 항상 참으로 남아 무한 루프에 빠지게 됩니다.

else 절과 함께 사용하는 while 루프

while 루프 안의 else 문은 조건이 더 이상 참이 아니게 되는 순간 딱 한 번 실행됩니다.

예를 들어:

i = 1
while i < 5:
    print("Hello world")
    i = i + 1
else:
    print("The execution has ended")

실행 결과:

Hello world
Hello world
Hello world
Hello world
The execution has ended

break 키워드로 루프 중단하기

break 문은 특정 지점에서 루프의 실행을 강제로 중단하고 싶을 때 사용합니다.

아래 예제에서는 'c'라는 문자를 만나는 순간 루프를 멈추도록 했습니다.

my_list = ['a', 'b', 'c', 'd', 'e']
for i in my_list:
    print(i)
    if i == 'c':
        print("'c' encountered. Breaking the loop")
        break

실행 결과:

a
b
c
'c' encountered. Breaking the loop

continue 키워드로 현재 반복 건너뛰기

continue 키워드는 해당 회차(iteration)의 나머지 명령문을 건너뛰고 다음 반복으로 바로 넘어갈 때 사용합니다.

아래 예제에서는 'c'를 만나면 출력하지 않고 루프를 계속 진행합니다.

my_list = ['a', 'b', 'c', 'd', 'e']
for i in my_list:
    if i == 'c':
        continue
    print(i)

실행 결과:

a
b
d
e

'c'만 출력되지 않고, 루프는 이어서 'd'와 'e'를 정상적으로 출력하는 것을 확인할 수 있습니다.

정리

  • for 루프와 while 루프는 모두 반복 작업(순회)을 위해 사용됩니다.
  • 명령문 집합을 여러 번 실행하거나 리스트 같은 컬렉션을 순회할 때 활용합니다.
  • for 루프는 range() 메서드와 함께 사용할 수 있으며, 하한과 상한을 모두 지정하거나 상한만 지정할 수 있습니다. 상한만 지정하면 하한은 자동으로 0이 됩니다.
  • 루프가 실행될 횟수를 미리 알고 있다면 for 루프를 사용하는 것이 적합합니다.
  • while 루프는 조건식을 가지며, 조건이 거짓(False)이 될 때까지 실행됩니다.
  • while 루프에는 반드시 조건을 탈출할 수 있는 장치가 있어야 하며, 그렇지 않으면 무한히 실행됩니다.
  • 루프가 몇 번 실행될지 미리 알 수 없다면 while 루프를 사용하는 것이 좋습니다.
  • else 블록은 for 루프와 while 루프 어디에서든 사용할 수 있으며, 중간에 break로 중단되지 않으면 항상 실행됩니다.
  • break 키워드는 루프의 실행을 종료합니다. break를 만난 이후에는 더 이상의 반복이 진행되지 않습니다.
  • continue 키워드는 현재 반복을 건너뛰고 곧바로 다음 반복으로 이동합니다.