<플레이데이터>부트캠프의 기록/Python

Python_5 : 나에겐 너무 어려웠던 While(파이썬)

EZ_SOO 2022. 7. 9. 22:05

while... 후 while을 제대로 이해하는데 며칠이 걸린 것 같다! 부트캠프 생활을 하며 하루하루 꼭 배운것을 포스팅

했는데, 금요일에 포스팅을 하지 못한이유는 바로 이 'while' 때문이다!

2-3일차 쯤 배운 이 'while'이 이해가 됐다 싶으면 또다시 머리가 리셋되고, 또 리셋되고...

그리고 드디어 어느정도 머리에 while이 이해가 되어 포스팅을 해보려고 한다.

 

 

while
  • 기본형태가 if와 유사하다.
  • if가 명제를 한번만 검사하고 분기를 한다면 while은 명제를 주어진 조건까지 검사한다.
  • 과정을 여러번 거치기 때문에 '반복문'이라고도 부른다.

 

'1에서 부터 10까지의 정수를 한번에 출력하려면 어떻게 해야할까?'

우선 내가 while을 공부하며 터득한 방법으로는 순서도를 그리면 어디에 반복을 걸어야 할지 감이 조금 잡히는 것 같다.

이것을 어떻게 코딩해볼 수 있을까?

1. 순서도에서 n을 1로 입력한다 >>> n = 1

2. n은 1과~10의 사이니? >>> 1<=n<=10

3. 프린트해줘! >>> print(n) 

*end=" "는 보는 사람의 편의를 위해 임의로 줄바꿈 함수를 사용한 것이니  while구문 이해에 필요한 부분은 아니다*

4. n에 1을 더해줘! >>> n = n+1

 

 

이 프린트는 과연 몇 번 프린트가 될까? 아래의 포스팅을 보기전 먼저 예상해보자!

 

 

 

 

 

 

 


 

 

 

 

 

 

예상한대로 답이 나왔는가? 정답은 무한이다! 왜 멈추지 않고 계속 출력 되는 것일까? 

바로 멈출 수 있는 조건을 주지 않았기 때문이다. ( 이것을 '무한루프'라고 표현한다.)

위에서 n = 1이라고 명제를 주고 아래에 n<=10 일때 print를 해달라고

했는데, 'n=1' n은 1이고 당연히 10이하가 맞기때문에 멈추지 않고 계속 실행되는 것이다.

이때 이 프린트를 멈추려면 '멈출 수 있는 조건'이 필요하다. 

 

 

'1-10까지 열번만 프린트 구문을 출력해줘!'

이때의 조건은 1-10까지만으로 while구문이 멈출 수 있는 조건이 된다. 그렇다면 어떻게 표현할 수 있을까?

조건을 주었더니 프린트 구문이 아까처럼 계속 출력되지 않고 10에서 멈춘 것을 볼 수 있다.

 

위의 구문이 쉽고 간결해서 'while 쉬운데?'라고 생각할 수 있겠지만 나중에 더 복잡해진 코드에서의 while을 위해

지금 배운 원리를 제대로 이해하고 있어야 한다. 가장 중요한 포인트 'while을 멈추기 위해서는 조건을 주어야 한다!'

 

그런데 복잡한 구문에서는 while에게 조건을 주고 조건이 충족되면 강제로 멈추게 할 수 있는  방법이 있다.

바로 'break'다! 위에서 보았던 무한루프 구문에 break를 사용해보겠다.

 

 

 

 

'while'문의 <break>
  • 조건대로 출력 되다가 브레이크를 만나게 되면 실행문은 끝이나게 된다.

위의 예처럼 프린트뒤에 break를 주었기때문에 프린트 구문이 한번 실행되고 break를 만나 실행문이 종료된 것이다.

이 프린트는 과연 몇 번 프린트가 될까? 아래의 포스팅을 보기전 먼저 예상해보자!

 

 

 

 

 


 

 

 

 

 

예상한대로 답이 나왔는가? 정답은 1번이다. 생각을 해보면 조건도 주었고, 1이 while구문으로 들어와서 조건에 맞게 

10번을 돌고 나와야하는데 왜 1번밖에 출력되지 않았을까? 바로 n = n+1을 만나기 전 'break'가 사용되었기 때문이다.

n은 1로 들어와 print구문을 출력하고 n = n+1을 만나러 가야하는데 break가 사용되었기 때문에 그자리에 멈춰버리게

된 것 이다.

 

'while'문의 <continue>

  • 실행문을 한번 빠져나가고 계속 반복하도록 하는 명령어

continue를 이용해 1부터 11까지의 홀수를 구해보자!

 

이해를 돕기위해 파이썬 튜터를 사용해보았다!

 

파이썬 튜터를 통해도 볼 수 있듯, 방금의 n은 n+1을 만나 2가 되었고 이는 짝수였기 때문에 continue를 만나 프린트로 

가지 못하고 조건으로 올라간 걸 볼 수 있다. 

 

 

 

3의 경우 짝수가 아니기 때문에 if의 조건에 속하지 않아 print로 내려가 출력될 수 있었던 것이다!

 

 

while 요약
  • while은 무언가 반복할 때 사용하는 방법이다.
  • 무한으로 실행되는 것을 막기 위해 조건을 주어야 한다.
  • break를 걸어 실행을 종료시킬 수 있다.
  • continue를 사용해 한번 빠져나가고 계속 반복을 할 수 있다.