저번에 While, break, continue문에 대해서 간단하게 알아 보았고, 이번에는 for문에 대해서 알아 봅시다. 같은 반복문이지만 앞에 언급했다시피, for문은 반복횟수가 확실히 정해져 있을 때 쉽게 사용할 수 있습니다. 알고리즘 자체가 쉽기 때문입니다.
for문은 기본적으로 iterable 리스트에 for 시작변수 in [리스트] 와 같은 형식으로 사용 할 수 있습니다. 또는 range(0,n)은 iterable변수를 0....n까지 생성 할 수 있으므로, 리스트 대신에 사용 할 수 있습니다. 즉, in 뒤에는 iterable값이면 아무 거나 들어 갈 수 있다는 것입니다. 다른 언어보다 직관적이고 확실히 편리합니다.
for문의 사용 방법은 다음과 같습니다.
['1', 'kim', 'jamwon', 'seoul', 'phone']
0 0
1 1
2 4
3 9
4 16
5 25
6 36
7 49
8 64
9 81
list의 값을 순차적으로 꺼내거나, 값을 생성하여, 이에 대해 index를 부여한 다음, 차례대로 꺼내는 것도 가능합니다. 즉, list든 변수든, iterable한 객체이면 for문에서 사용하는 데 문제는 없다는 얘기입니다. 이것만 지키면 상관없습니다.
Continue문을 좀 살펴 보겠습니다.
10까지의 값을 하나씩 프린트 하는데, 2로 나눈 나머지 값이 0이 되는 것 (j%2==0)에서는 순차적으로 내려가서 프린트하지 않고 제어를 다시 for문으로 돌려 버립니다. 그러니까 출력되지 않겠죠? 이렇게 Continue문은 For문과도 함께 사용될 수 있다는 것을 알아 둡시다.
for문에서 가장 먼저 배우는 별찍기는 생각보다 파이썬에는 상당히 쉽습니다. line by line이 자동으로 변하기 때문입니다.
for c in range(0,11):
print("*"*c)
*
**
***
****
*****
******
*******
********
*********
**********
C 언어와 같은 경우에는 중복 For문을 사용하고 막 별짓을 다 해야 해서 처음 접하는 사람에게는 좀 어려웠는데 파이썬은 딱 직관적으로 느껴지네요. 첫 line에서 하나를, 두 번째 line에서 2번을, 곱하기로 하는 거니 아시겠죠? 정말 직관적이고 쉽습니다.
1. For
하지만 이 별을 여러 번 찍어 준다. 하면 좀 다릅니다. 먼저, 중복 for문의 개념에 대해서 알아 보면
for i in range(0,n):
...
for j in range(0,m):
...
처럼 코드가 있으면,
j 및의 코드를 m번 까지 모두 반복한 다음에, 바깥 for문을 한 번 처리 하고 최대 n번 반복하는 것입니다. 이것은 for문이 3개, 4개 있어도 동일하게 적용됩니다.
*
**
***
****
*****
******
*******
********
*********
**********
*
**
***
****
*****
******
*******
********
*********
**********
*
**
***
****
*****
******
*******
********
*********
**********
그러면 중복 for문의 개념을 적용해서 위와 같이 한 번 별을 찍어 주고, 띄어 쓰기 해주고, 한 번 별을 찍어주고, 띄어쓰기 해주고, 이런 식으로 출력해 주고 싶습니다. 어떻게 해야 할까요?
for b in range(0,11):
print("\n")
for b in range(0,11):
print("*"*b)
위와 같이 써주면 됩니다. 참 쉽죠?
띄어쓰기 라인에 첫번째 For문을 넣어주고, 그 안에, 반복되는 라인에, *을 찍어주는 For문을 넣어주시면 됩니다. 그러면 *을 모두 찍어준 다음에, 한 번 띄어쓰기 해주고, 다시 *를 찍어주고, 다시 띄어쓰기 하고.....를 반복하고 프로그램을 종료하게 됩니다.
마지막으로 중복 For문의 개념을 알아 보기 위해서 구구단을 출력하는 간단한 프로그램을 살펴보면
1*1
1*2
1*3
1*4
1*5
1*6
1*7
1*8
1*9
=============================================
2*1
2*2
2*3
2*4
2*5
2*6
2*7
2*8
2*9
=============================================
다음과 같이 출력하면 됩니다. 1단을 먼저 출력하기 위해서 %d (앞에 for문) * %d (뒤에 for문)를 하는데 뒤에 for문은 처음에 9까지 반복이 됩니다. 그리고 9까지 반복이 ㅐ되면 1단인지 2단인지 구분하기 위해서 "======================"가 출력이 되고, 다음 줄로 넘어갑니다.
중복 For문이 처음에 헷갈 릴 수도 있겠지만 여러번 보시다보면 금방 익숙해 지실 겁니다. 또 파이썬은 간단히 직관적으로 써놨기 때문에 금방 익숙해 지시겠죠. 그럼 다음엔 함수로 찾아오도록 하겠습니다. (__)