본문 바로가기

프로그래밍 언어/AI & 파이썬_Python

파이썬 Python 코딩_07_반복문

반복문 (LOOP)

 

반복문은 말 그대로 '어떤 것을 반복할 때 사용하는 구문'이다.

반복문은 코딩을 잘 못했을 경우 '무한 반복' 같은 에러가 날 수 있으므로 주의해야 한다.

반복해서 처리하는 것을 영어로 Loop(루프)라고 하며 '고리'라는 뜻으로 계속 반복을 나타낸다.

루프 코드를 만들 때는 '어떤 조건이 맞으면 계속 반복'하게 만드는 것이다. 

조건이 맞지 않으면 루프를 끝낸다.

 

반복문을 만들때는 for (포; ~동안), while(와일; ~하는 동안)을 사용한다.

 

for

 

Loop라는 문자열을 5번 출력하는 코드를 만든다고 해보자.

 

 

5번 입력하든지 복사해서 붙여넣기 할 수도 있다.

그런데 만약 100번, 1000번 출력하려고 할 때 간단하게 할 수 있는 코드가 반복문이다.

만약 100번 출력하도록 코딩하려면 다음과 같이 한다.

 

 

range(뢰인지)는 '범위'라는 뜻이다.

위 코드의 뜻을 풀이하면 다음과 같다.

 

for(동안 반복하라) i(변수 i)가 in range(범위 100 안에)있을 동안 

    출력하라(문자열 loop)를

 

위 코드가 실행하면 다음과 같은 과정을 거쳐 작업이 일어난다.

 

  1. for반복문이 시작하면 제일 먼저 변수i에 0을 넣는다.(코딩에서는 항상 0부터 시작한다) 
  2. in range에서 변수i의 값이 범위(100) 안에 있는 지 확인한다.
  3. 0은 100 안에 있으므로(보다 작으므로) 첫번째 loop를 출력한다.
  4. 한번 출력했으므로 변수i값에 1 더한다.
  5. 다시 변수i의 값(1)이 100 안에 있는지 확인한다.
  6. 1은 100 안에 있으므로 loop를 출력한다.
  7. 이런식으로 반복하다가 i 값이 99가 되면 100번째 loop를 출력하게 된다.
  8. 다시 i에 1을 더해서 100이 되면 101번째 출력이 되므로 범위(100)을 벗어나게 된다.
  9. 그래서 print("loop")를 실행하지 않고 종료한다.

 

while

 

while반복문은 '조건'을 넣을 수 있다.

 

앞에서 만든 for반복문을 while로 바꾸면 다음과 같다.

 

코드의 뜻은 다음과 같다.

 

변수i 에 0을 넣어라.

while(~하는 동안) i 가 100보다 작다:

출력하라 문자열loop를

i에 넣어라(=) i값에 1을 더해서

 

위 코드가 실행하면 다음과 같은 과정을 거쳐 작업이 일어난다.

 

  1. 변수i가 만들어지고 정수 0이 저장된다.
  2. while코드에서 0 < 100 가 '참'이므로
  3. 첫번째 loop를 출력한다.
  4. 변수i에 저장된다(=) 0+1을 계산한 값(1)이 (여기서 변수i의 값은 1이 된다)
  5. 다시 while코드로 이동한다. 1 < 100 가 '참'이므로
  6. 두번째 loop를 출력한다.
  7. 이런 식으로 반복하다가 100 < 100 는 '거짓'이므로 loop를 출력하지 않고 종료한다.
  8. 결국 i값이 99 (100번째) 될 때까지 출력하여 100개의 loop 문자열이 출력된다.

 

위 예를 보면 for 반복문과 while 반복문은 서로 같다는 것을 알 수 있다.

아무 것이나 사용해도 되지만 경우에 따라서 더 편리하게 코드를 작성할 수 있는 상황이 있다.

어떤 경우에 어떤 반복문을 사용하면 편리한 지는 반복문을 자주 만들다 보면 알게 된다.

 

무한 반복(infinite loop)

세번째 코드가 while i < 100: 코드와 다른 점은 무엇인가?

while i < 100: 에는 '조건' (i가 100보다 작으면)이 있는데 while True: 는 조건이 없다.

while True: 는 " while 반복문이 True(참)일 동안에" 라는 말이므로, 즉 while 반복 코드가 있으므로 변수i의 값이 1씩 증가하면서 문자열 loop가 무한정으로 출력될 것이다.

이런 상황을 '무한루프, 무한반복'이라고 한다.

 

코드가 무한루프에 빠지면 안되므로 위 코드에 조건을 넣어주고 그 조건에 해당하면 무한루프에서 빠져 나오도록 해야한다. 무한루프에서 빠져 나오게 할 때 사용하는 명령어는 break(브레이크; 깨다)이다.

앞에서 배웠던 if를 사용하여 다음과 같이 수정해야 한다.

 

위 코드는 다음과 같이 실행한다.

 

  1. 변수i에 0이 저장된다.
  2. while 반복문이 있으므로 첫번째 loop를 출력한다.
  3. 다음줄에서 i값이 1로 바뀐다.
  4. 다음줄로 넘어가서 if(만약) 1 > 99가 '거짓'이므로 다시 while로 돌아간다.
  5. 다시 두번째 loop를 출력한다.
  6. i값이 2로 바뀐다.
  7. if 2 > 99 가 '거짓'이므로 다시 while로 돌아간다.
  8. 이런 식으로 출력하다가 if 99 > 99 가 '거짓'이므로 다시 while로 돌아간다.
  9. 100번째 loop가 출력되고 if 100 > 99 가 '참'이므로(조건에 맞으므로) 다음 줄로 넘어간다. 
  10. break에서 무한 반복을 멈추고 빠져나간다.(반복 종료)

다음과 같은 코드는 loop가 몇 개 출력될까?

 

 

만약 헷갈린다면 다음과 같이 변수 i의 값을 출력하도록 print(i) 코드를 넣어서 출력해보자.

in range(3)은 loop를 3개 출력하라는 뜻이고 변수의 값은 2가 되는 것을 알 수 있다.

 

이번에는 continue라는 명령어를 알아본다.

반복하고 있을 때 어떤 특별한 조건일 때만 그 다음 코드를 실행하고 싶지 않을 때continue(컨티뉴; 계속하다)를 사용한다.

예를 들어 아래 코드를 실행하면 다음과 같이 출력될 것이다.

 

 

그런데 i의 값이 1일때는 C를 출력하지 않도록 하고 싶다.

이런 경우에 continue를 사용한다.

 

 

i 값이 1일 때는 continue 명령어가 작동하여 그 다음에 있는 print("C")가 실행되지 않고 다시 for문으로 되돌아가서 계속 반복하게 된다. 그래서 i가 1일 때만 C가 출력되지 않는것이다.

 

반복문은 여기까지.

 

Wraven...