만약 'hello' 라는 문자열을 100번 출력해야 한다면 어떻게 해야할까? 가장 1 차원 적인 방법은 print
를 100 번 사용하는 것이다.
print('hello')
print('hello')
print('hello')
.
.
.
print('hello')
하지만 이 방법은 너무 무식한 방법이고 시간도 너무 많이 걸리고 비효율적이다.
그래서 대부분 프로그래밍 언어에서는 반복되는 작업을 간단하게 처리할 수 있는 '반복문' 이라는 기능을 제공한다. 몇 가지 반복문들이 있지만 먼저 for
반복문을 살펴보자.
for
을 이용하는 방법으로는 여러가지가 있지만 range
부터 살펴보면 range
를 통해서 우리는 '반복할 횟수' 를 지정할 수 있다. 앞서 말했던 'hello' 100번 출력하기는 다음과 같이 하면 된다.
for i in range(100):
print('hello')
앞서 우리는 '리스트 만들기' 에서 range
는 연속된 숫자를 생성한다고 배웠다. for
반복문은 range
에서 in
으로 숫자를 하나씩 꺼내서 반복하는 방식이다.
range(100)
을 하면 0부터 99까지 숫자 100개를 생성한다. 그리고 0부터 하나씩 차례대로 변수 i
에 저장하고 반복문 안에 있는 print
문이 실행되는 것이다.
그렇다면 이번에는 변수 i
도 같이 출력해봐서 실제로 반복문이 돌아가면서 변수의 값이 어떻게 변하는지 확인해보자.
for i in range(100):
print('hello', i)
hello 0
hello 1
hello 2
hello 3
... (생략)
hello 98
hello 99
그렇다면 앞서 range
에는 시작, 끝, 증감폭도 지정할 수 있었으니까 그것을 활용하여 반복문을 바꿔보자
for i in range(10, 0, -2):
print('hello', i)
hello 10
hello 8
hello 6
hello 4
hello 2
위와 같이 활용할 수 있다.
또한 앞서 배웠던 input
을 통해 숫자를 입력받고 그 횟수 만큼 반복문을 반복하는 형태도 만들 수 있으니 참고하자.
앞서 range
를 활용했었는데 이미 눈치 챘겠지만 range
외에 리스트, 튜플, 문자열 등 시퀀스 객체를 넣을 수 있다.
>>> a = [10, 20, 30, 40, 50]
>>> for i in a:
... print(i)
...
10
20
30
40
50
>>> for letter in 'Python':
... print(letter, end=' ')
...
P y t h o n
여기에선 print
에 end
를 띄어쓰기로 지정해줘서 print
가 실행될 때 마다 줄바꿈 대신 띄어쓰기가 일어난다.
>>> for letter in reversed('Python'):
... print(letter, end=' ')
...
n o h t y P
reversed
를 사용하면 문자열을 뒤집어서 출력할 수도 있다.(원본 객체 자체는 바뀌지 않으며 뒤집어서 꺼내줌).