-
6.1 반복문
- while 반복문
while(조건): 명령 # 무한 루프를 돌지 않도록 탈출 조건을 만들어야 한다.
조건이 만족하는 동안 계속 반복한다. 명령의 자리는 들여쓰기로 블록을 구분한다.
루프는 특정 변수값을 기준으로 반복하는데 반복을 통제하는 변수를 제어변수라고 한다. 언젠가는 반복을 끝내야 하므로 루프에는 조건의 진위 여부를 바꾸는 명령이 반드시 포함되어 있어야 한다.
- for 반복문
for 제어변수 in 컬렉션: 명령
for 문은 컬렉션의 요소를 순서대로 반복하면서 루프의 명령을 실행하는 반복문이다.
for 문은 컬렉션의 요소를 하나씩 꺼내어 제어 변수에 대입하여 루프레서 처리한다.
컬렉션의 요소를 다 꺼내면 반복은 끝나며, 루프를 몇 번 돌 지는 컬렌션의 요소의 수에 따라서 미리 정해져 있다.
while 문과 비슷한 효과를 얻으나, 제어 변수를 초기화하거나 증가시키기 않아도 짧고 간단하다.
보통은 일정 범위의 리스트를 만들고 이 리스트 내의 요소를 반복하는데, 이럴 때는 요소를 일일이 나열하기보다 range 명령으로 순차적으로 증가하는 리스트를 만든다.
range(시작, 끝(끝 값 포함X), 증가값) # 증가값 생략 가능, 디폴트 1 # 시작값 생략 시, 디폴트 0부터 # 순차적으로 증가, 감소하는 리스트를 만들어주는 함수
range는 시작값을 첫 요소로 만들고 끝값 지적까지 값을 나열하되 매 요소는 증가값만큼 더해진다.
ex) range(1, 6) -> [1,2,3,4,5]
for student in [1,2,3,4,5]: print(student, "번 학생의 성적을 처리한다.")
for student in range(1, 6): print(student, "번 학생의 성적을 처리한다.")
따라서 위의 코드를 아래 코드로 대체 가능하다.
while, for 문은 서로 장단점이 있어 용도에 따라 구분하여 사용한다. for의 경우 반복 범위가 명확한 경우, while 문은 반복 범위가 가변적인 경우 주로 사용한다.
- 제어 변수의 활용
루프는 반복 횟수와 끝낼 시점을 결정하기 위해 제어 변수를 사용한다.
제어 변수를 꼭 사용해야 하는 것은 아니며 단순히 반복 횟수만 통제할 때는 읽지 않아도 상관없다.
- break (반복문을 벗어나게 한다.)
중간에 어떤 이유로 반복을 중지하거나 현재 반복을 건너뛰어야 할 경우가 있는데 이럴 때 흐름 제어문을 사용한다.
break 문은 반복문을 끝낸다. 무조건 탈출하는 것이 아니라 특정한 조건에 의해 탈출하므로 보통 if 문과 함께 사용한다.
중지의 느낌.
- continue
break 문은 루프를 탈출하는데 비해, continue 문은 이번 루프 하나만 건너뛰고 나머지는 계속 수행한다. 현재 반복만 중지하고 루프의 선두로 돌아가 조건을 점검한 후 다음의 반복을 진행한다. break와 마찬가지로 특정 조건일 때만 실행하므로 보통 if 문과 함께 사용한다.
스킵의 느낌.
6.2 루프의 활용
- 이중 루프
루프끼리 중첩된 것을 이중 루프라고 한다. 어떤 루프에 소속된 명령인가에 따라 들여쓰기를 정확히 지켜야 한다.
- 무한 루프
무한히 반복하는 루프이다.
while True: 명령 if 탈출조건: break
진짜 무한히 반복해서는 안 되므로 루프 중간에 반드시 break 명령을 두어 적당한 조건이 되었을 떄 루프를 끝내야 한다.