클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

반복문 코드의 반복 줄이기 3 - while 문 본문

프로그래밍 언어/파이썬

반복문 코드의 반복 줄이기 3 - while 문

huenuri 2024. 8. 1. 10:43

for문에 이어 while도 배워보기로 하자. 난 솔직히 for 문보다 while 문이 더 어렵고 잘 사용하지 않게 되는 것 같았다. while 문의 큰 특징은 무한루프가 존재한다는 것이다.

이제 바로 학습을 시작해보자! 오늘 밤까지 4단원을 모두 마치려면 속도를 내야 한다.


 

 

 

이론 3 - 반복문 3 : while 문

 


if문과 비슷하고 조건을 기준으로 한다. if문과 다른 점은 조건이 참일 때만 항상 그 명령을 수행한다는 것이다.

 

 

 

 

 

 

if 문과 다른 점 또 하나는 조건이 참이면 다시 돌아가서 명령을 수행하기를 반복한다. 예시를 보면 i = 5일때 명령을 수행하고 1일 때까지 계속 반복하다가 0이 되면 빠져나온다.

 

 

 

 

 

 

sum과 i를 더하기를 반복하면 마지막에 sum은 10이 된다. 이런 문제를 풀 때는 머리로는 이해하기 힘드니 종이에 쓰면서 학습하는 것이 좋다. 전에 강사님들이 이런 이야기를 하실 때는 마음에 별로 와닿지 않았는데, 지금은 알 것 같다. 머릿속으로만 코딩을 하려는 건 수학문제를 눈으로 푸는 것과 같다고 생각한다.
천재가 아닌 이상은 우리는 어떤 것에 익숙해지기 전까지 눈과 손이 부지런해야 한다.

 

 

 

 

 

 

이렇게 무한정 루프에 빠지면 빠져나올 수가 없다. 그럴 때 사용하는 것이 바로 뒤에 나오는 break문이다.

 

 

 

 

 

 

i가 3 이상이 되면 break로 탈출하는 문이다. 이렇게 이론 학습을 마쳐본다.


 

 

 

퀴즈 3 - 반복문 종료

 

 

 


 

 

 

퀴즈 4 - while 문

 

 

조금 전에 강사님이 왜 이 문제 설명을 안하고 혼자서 풀어보라고 했는지 알 것 같다. 퀴즈로 똑같은 문제가 있었다. 알고리즘 시간에는 잘 이해가 안되었는데, 이번에는 혼자서 풀어보았다.


 

 

 

퀴즈 5 - 반복문

 

 

 

 

while 문을 배웠으니 이게 정답일줄 알았는데 아니었다.

 

 

 

 

range는 구간을 반복하면서 명령을 수행하는 문이니 이게 더 적합하다.


 

 

 

 

실습 7 - 조건으로 반복 : while

 

 

 

10이 되었을 때 i를 하나 증가시키니 11이 된다. 그러니까 11이 되었을 때는 조건이 성립하지 않게 되는 것이다.

 

 

이 식은 11이 되기 전까지 반복하기 위해 i에 1을 더해주었다.


 

 

 

 

실습 8 - 10년 형에 처한다

 

 

 

변수를 저장하고 값을 지정해준다. 나머지는 조금 전에 풀었던 문제와 비슷하다.

 

 


 

 

 

실습 9 - 반복문 탈출 : break

 

 

 

생각해보기 문제

  1. 위 코드는 조건이 주어졌을 때 계속해서 반복하는 코드이다.
  2. True는 참이 될 때 계속해서 반복한다는 뜻이다.
  3. i + 1은 i 값을 증가시켜 5에 도달하기 위함이다.
  4. if 문이 바깥에 있으면 조건은 성립하지 않고 계속 무한루프에 빠진다.
  5. 1부터 10까지 출력하고 싶다면 i == 10: 하고 break를 쓰면 된다.

 

 

 


 

 

실습 10 - 장바구니 프로그램 만들기

마지막 문제이다. 여기까지 잘 왔고 조금 더 힘을 내보자.

 

 

 

 

 

이렇게 풀었는데 break가 밖에 있다는 에러가 떴다.

 

 

 

 

이번에는 shopping_list.append()에서 1개의 배열만은 갖고 있다는 에러가 떴다. 괄호에 변수를 넣어주는 것을 항상 잊어버린다. 왠지 괄호를 만나면 아무것도 기록하지 않아야 할 것 같은 착각에 빠지는 것 같다.

 

 

 

 

이제 문제를 다 풀었다. 드디어 다 끝나서 너무나 기쁘다!


 

 

 

세번째 단원 학습을 마치고

while문은 생각했던 것보다 이해하기 괜찮았다. 공부를 할수록 프로그래밍에 대한 이해도가 더 높아지는 것 같다. 난 문제를 풀 때 일부러 틀린 답안도 모두 기록해본다. 왜 틀렸는지 분석해보고 답을 찾아가는 과정이 정답을 맞추는 것보다 더 중요하다고 생각하기 때문이다.

이제 미션 문제를 풀고 단원을 마무리하는 정리가 남아있다. 남은 시간까지 최선을 다해 열심히 공부해야지!