반복문

반응형

2.3. 반복문(for)

이번엔 for 문에 대해서 알아볼 차례입니다. 파이썬에서 for 문의 쓰임새는 다른 언어와 차이가 있다고 하네요. 저도 그걸 모르고 한참 글을 쓰다보니 뭔가 이상하다는 것을 발견했습니다. ^^;

for 문은 우리가 전에 배웠던 목록(list)과 같은 순서형 자료를 이용해서 원하는 명령을 반복할 때 쓰인다고 합니다. 순서형에 대해서는 나중에 자세하게 알려드리도록 하구요, 전에 배웠던 목록을 다시 한번 볼까요?

>>> family = ['mother', 'father', 'gentleman', 'sexy lady']

저희 가족이 이랬었는데 기억 나시지요? 그냥 따라 치지 마시고 여러분의 가족을 나타내는 목록을 만들어 보세요.

다음은 for 문을 이용해서 저희 가족들의 이름과 문자열 길이를 출력하는 프로그램입니다.

>>> for x in family:                    # family라는 목록의 각각의 항목 x에 대하여:
...     print('%s %s' % (x, len(x)))    # x와 x의 길이를 출력하라.
...

답은 아래와 같이 나오게 되지요.

mother 6
father 6
gentleman 9
sexy lady 9

in family for x:라고 쓰면 안되냐구요?

안되네요. --;

문법이 그런 거니까 그대로 써주시면 됩니다.

이번엔 range()라는 것을 배워보도록 하지요. range는 범위라는 뜻인데 여기서는 어떤 숫자를 적어주면 그 범위 안에서 리스트를 만들어줍니다. 말은 좀 어렵지만 별 거 아니랍니다.

>>> range(2, 7)         # 파이썬 2

>>> list(range(2, 7))   # 파이썬 3

이렇게 쳐 보세요. 어떤 답이 나오나요?

[2, 3, 4, 5, 6]

예, 2 이상 7 미만인 숫자로 리스트를 만들어 주었군요. 위에서 설명한 말이 이해되시죠?

그런데, for를 설명하다가 갑자기 웬 range가 나오는 걸까요? 그렇습니다. for 문에서 range를 써먹을 수 있기 때문이겠죠. range와 리스트는 결국 같은 것이니까 for 문에서도 사용할 수 있다는 말씀입니다.

>>> a = [4, 5, 6, 7]
>>> for i in a:
...     print(i)
...

위의 예제와 아래 예제는 같은 일을 하게 되는 것이지요.

>>> for i in range(4, 8):
...     print(i)
...

답이 어떻게 나올까요? 따라서 치시기 전에 먼저 생각을 해보세요. 그리 어렵지 않죠?