반복문은 말 그대로 자기 내용을 반복합니다. Python의 반복문에는 두 가지 종류가 있습니다. 하나는 for문(for statement)이고, 나머지 하나는 while문(while statement)입니다. 차례로 알아보도록 하겠습니다.
필수 자료
https://dojang.io/course/view.php?id=7
이 링크의 unit16, unit17를 꼭 읽어보시고 따라해보시기를 바랍니다.
더하여, 퀴즈(16.4, 17.4)가 있는데 회원가입 하시고 수강등록 하시면 풀 수 있습니다. 꼭 풀어봐주세요:)
for문은 정해진 횟수를 반복하는 데 유용합니다. 그리고 이 for문은 이전에 배운 sequence를 이용합니다.
for 변수 in 시퀀스:
수행할 문장1
수행할 문장2
...
이전에 배운 시퀀스(sequence) 타입으로는 다음 네 가지가 있습니다.
하나씩 예시를 보도록 하겠습니다.
i, j, k등의 변수에 sequence의 원소가 하나씩 저장되면서 블록(block)을 실행하는 것을 알 수 있습니다.
여기서 가장 보편적으로 사용하는 것은 range입니다. 기본적으로 for문은 반복문인데, 원하는 횟수만큼 반복이 편리하고 range를 사용해도 인덱스 접근이 가능하기 때문입니다.
range의 경우는 굉장히 자주 쓰입니다. range가 아래와 같이 적용됩니다.
변수에 range의 원소를 하나 저장하고 for문을 실행하는데, 더이상 지정할 원소가 없을 때까지 실행합니다.
for i in range(2,5): # for i in range(~)가 가장 일반적인 쓰임이다.
print(i)
일반적으로 for문은 range와 함께 정해진 횟수를 반복할 때 사용합니다.
실행 결과는 다음과 같습니다.
보시면 i에 range(2, 5)의 원소가 저장되는 것을 볼 수 있습니다.
while문은 횟수가 정해지지 않은 반복을 수행할 때 유용합니다. 횟수는 모르지만 특정 조건을 만족할 때마다 반복하도록 합니다.
while <조건식>:
<수행할 문장1>
<수행할 문장2>
<수행할 문장3>
...
우선 조건식을 계산해서 True라면 블록(block)을 실행하고 False라면 실행하지 않습니다. True일 때 실행을 하고 나서 다시 조건식을 계산하는데, True일 때마다, 즉 False가 나오기 전까지 계속 반복합니다.
x = input( ) : input( )함수는 사용자의 입력(키보드)을 받는 함수입니다. 괄호 안에 문자열을 넣으면 해당 문자열을 출력하고 입력(키보드)을 받습니다. input( )함수는 입력된 값을 문자열로 바꿔서 돌려줍니다(return). 그리고 그 값을 x에 저장했습니다.
x = int(x) : 형(type)변환입니다. x에는 문자열이 저장되어 있는데, 아래 코드를 보면 x를 숫자와 비교(x < 10)하고 있습니다. 가능하게 하려면 문자열 x를 int x로 바꿔주어야 합니다. 사용자가 숫자 형태의 문자열만 입력한다고 가정하면, 우측의 int(x)를 먼저 실행한 뒤 x에 지정합니다.
while (x < 10): : x이 10보다 작으면 블록을 실행합니다.
print(x) : x를 출력합니다(모니터).
x += 1 : x = x + 1로 x에 1을 더한 뒤에 그 값을 x의 새로운 값으로 정합니다.
여기서 x += 1 은 반드시 있어야 합니다. 만약 아래와 같이 조건이 코드 상에서 영원히 True라면 무한반복(infinite-loop)에 빠지게 됩니다.
조금 극단적이지만 1이 0보다 크다는 것은 print(1)과는 전혀 무관합니다. 결국 1 > 0은 영원히 True이므로 사용자가 직접 종료(Ctrl + c)하지 않는 이상 반복이 끝나지 않습니다.
위에서 x += 1이 필수인 이유도 다음과 같습니다.
그런데 생각해보니 Python에서는 for range문의 횟수가 정해지지 않거나 while문의 횟수가 정해져도 괜찮습니다. 오히려 while은 일반적으로 횟수를 정하고 쓰는 경우도 더러 있습니다.
while문도 for문(특히 for i in range)처럼 정해진 횟수만큼을 반복할 수 있습니다.
i의 증감을 반드시 블록에 지정해주어야 합니다. 그렇지 않으면 무한반복(infinite loop)하게 됩니다.