
프로그래밍 언어에서는 반복되는 작업을 간단하게 처리하기 위해 반복문이라는 기능을 제공한다. 반복문은 반복 횟수, 반복 및 정지 조건을 자유자재로 제어할 수 있다.
for반복문은 range에 반복할 횟수를 지정하고 앞에 in과 변수를 입력한다. 그리고 끝에 클론(:)을 붙인 뒤 다음 줄에 반복할 코드를 넣는다.
for 변수 in range(횟수):
반복할 코드
for 다음 줄에 오는 코드는 반드시 들여쓰기를 해준다.
📎 참고) 에러
SyntaxError: invalid syntax:for반복문의 형식을 지키지 않았을 떄 발생하는 구문 에러이다.for반복문의 형식에 맞는지 확인한다. 특히for끝에 콜론(:)을 빠뜨리지 않았는지 확인한다.
SyntaxError: expected an indented block:for다음 줄에 오는 반복할 코드의 들여쓰기가 맞지 않아서 발생하는 구문 에러이다. 반복할 코드에서 들여쓰기 4칸을 했는지 확인한다.
for반복문은 range에서 in으로 숫자를 하나씩 꺼내서 반복하는 방식이다. for는 숫자를 꺼낼 때마다 코드를 실행한다.
for반복문은 반복 횟수가 정해져 있을 때 주로 사용한다.
for 변수 in range(횟수) -> 반복할 코드로 순환하는 것을 루프(loop)라고 부른다.
>>> for i in range(100):
... print('Hello, world!', i)
...
# 출력결과
Hello, world! 0
Hello, world! 1
Hello, world! 2
... (생략)
Hello, world! 98
Hello, world! 99
📎 참고) 반복문의 변수
i
변수i를 루프 인덱스라고 부르며index의 첫 머리 글자를 따서i를 주로 사용한다.
📎 참고) 버전별 range의 차이점
파이썬 2.7에서는range를 사용하면 실제로 연속된 숫자가 들어있는 리스트를 만들어내지만 파이썬 3에서는range객체(반복 가능한 객체)를 만들어낸다.
<파이썬 2.7>>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]<파이썬 3>
>> range(10) range(0, 10) >> list(range(10)) # range 객체를 리스트로 만듦 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range의 다양한 기능을 활용하여 for 반복문을 사용해본다.
>>> for i in range(5, 12): # 5부터 11까지 반복
print('Hello, world!', i)
# 실행결과
Hello, world! 5
Hello, world! 6
Hello, world! 7
Hello, world! 8
Hello, world! 9
Hello, world! 10
Hello, world! 11
>>> for i in range(0, 10, 2): # 0부터 8까지 2씩 증가
print('Hello, world!', i)
# 실행결과
Hello, world! 0
Hello, world! 2
Hello, world! 4
Hello, world! 6
Hello, world! 8
>>> for i in range(10, 0): # range(10, 0)은 동작하지 않음
print('Hello, world!', i)
range에서 시작하는 숫자를 큰 숫자, 끝나는 숫자를 작은 숫자로 지정하면 아무것도 출력되지 않는다. range는 숫자가 증가하는 기본 값이 양수 1이기 때문이다.
range에 증가폭을 음수로 지정해서 반복해본다.
>>> for i in range(10, 0, -1): # 10에서 1까지 1씩 감소
print('Hello, world!', i)
# 출력결과
Hello, world! 10
Hello, world! 9
Hello, world! 8
(생략)
Hello, world! 2
Hello, world! 1
증가폭을 음수로 지정하는 방법 말고도 reversed를 사용하면 숫자의 순서를 반대로 뒤집을 수 있다.
>>> for i in reversed(range(10)): # range에 reversed를 사용하여 숫자의 순서를 반대로 뒤집음
print('Hello, world!', i) # 9부터 0까지 10번 반복
Hello, world! 9
Hello, world! 8
Hello, world! 7
(생략)
Hello, world! 1
Hello, world! 0
📎 참고) 반복문의 변수 i를 변경할 수 있을까? 🔎
for와range로 반복하면서 변수 i를 변경하면 어떻게 될까?>> for i in range(10): print(i, end=' ') i = 10 # 실행결과 0 1 2 3 4 5 6 7 8 9변수
i는 반복할 때마다 다음 값으로 덮어써지기 때문에 값을 할당해도 변수에 영향을 주지 못한다.
count = int(input('반복할 횟수를 입력하세요: '))
for i in range(count):
print('Hello, world!', i)
반복할 횟수를 입력하세요:'가 출력되면 여기에 3을 입력하고 엔터
# 실행결과
반복할 횟수를 입력하세요: 3 (입력)
Hello, world! 0
Hello, world! 1
Hello, world! 2
for는 리스트, 튜플, 문자열 등 시퀀스 객체로 반복할 수 있다.
리스트 : 리스트의 요소를 꺼내면서 반복
>>> a = [10, 20, 30, 40, 50]
>>> for i in a:
print(i)
# 실행결과
10
20
30
40
50
튜플 : 튜플의 요소를 꺼내면서 반복
>>> fruits = ('apple', 'orange', 'grape')
>>> for fruit in fruits: # 반복문의 변수 i 대신 fruit 사용
print(fruit)
# 실행결과
apple
orange
grape
문자열 : 문자를 하나씩 꺼내면서 반복
>>> for letter in 'Python':
print(letter, end=' ')
# 실행결과
P y t h o n
문자열을 뒤집어서 출력하고 싶은 경우 reversed를 활용하면 된다.
>>> for letter in reversed('Python'):
print(letter, end=' ')
# 실행결과
n o h t y P
다음 소스 코드를 완성하여 리스트 x에 들어있는 각 숫자(요소)에 10을 곱한 값이 출력되게 만드세요. 모든 숫자는 공백으로 구분하여 한 줄로 출력되어야 합니다.
x = [49, -17, 25, 102, 8, 62, 21]
for i in x:
print(i * 10, end=' ')
# 실행결과
490 -170 250 1020 80 620 210
for에 리스트를 지정하면 각 요소를 꺼내면서 반복 가능
따라서, for i in x:와 같이 반복문을 만들고 꺼낸 변수 i에 10을 곱해서 print하면된다.