그런의미에서 한번, 저처럼 후회하지 마시고, 여러분도 다시 자신이 while을 제대로 이해하고있는지 간단한 퀴즈를 통해 먼저 체크해볼까요?ㅋㅋㅋ 아 하도 논문만 쓰고있으니 블로그가 꿀잼이네요.
먼저 들어가기 전에 밑에 그림을 보며 자기상태를 한번 점검해보세요! (질문에 대한 답은 밑에 설명해놓겠습니다.)
<그림 출처: 17기 강승연님의 비법노트>
퀴즈 어떠셨어요? 훗, while 우습게 보셨다가 아주 놀라진 않으셨나요?(제얘기)
정답을 하나씩 풀어가며 정리해볼게요.
while이라는 건 기본적으로 조건이 True라는 전제(또는 bool표현식)하에 반복되는 loop입니다. range가 확실한 for 구문과 차이가 있죠.
한마디로 "for는 리스트 딕셔너리 특정횟수반복때는 써라. 근데 아닌경우엔 while써라." 라고 할 수 있겠습니다.
b구역의 코드가 실행된다는건 while loop안에, try: 안에, if문 조건을 만족시키니까, else 로 가지않고 바로 if문을 나와 try:안에 D구역으로 갑니다.
D구역은 if문 바깥쪽 try:에 걸려있습니다. 따라서 그전에 실행되는 코드는 if문 또는 else 문을 실행하겠네요.
여기까진 쉬웠죠? 다음부터 중요해요!
break 는 실행되면 while loop전체를 탈출합니다.(Wooooow)
엄청 파워풀하죠? 따라서 코드를 끝까지 실행하지않고, 조건을 만족하기만하면 while을 그만하고 싶을 경우 쓰겠네요.
이건 제가 session때 감동을 받은 부분이여서 꼭 강조하고싶어요. (지훈님을 너무 악마교관으로 묘사한 경향이 있어서 만회해보려는거아니에요 ㅋㅋㅋㅋ)
효율적인 코드란 뭘까요? 반복되는 구문이 없고, 이해하기 쉬운코드가 아닐까요? 그럼, else문을 줄이기 위한 if문은 어떻게 구성할까요?
우선 구조를 알고 응용을 해보죠.
if문의 조건을 만족하지 않는 경우 실행되는 구문은 뭘까요? 네, 맞아요 else문이죠.
근데, 또 웃긴게 if문의 조건을 만족시키지 않으면 어차피 다음 코드로 넘어가겠죠? 그게 바로 D구역입니다. 다시말해 else와 다를 바가 없기도 하다는 겁니다.
따라서 else문을 쓰지 않더라도, D구역이 else문의 역할을 하게 코드를 짜 놓으면, 굳이 else라는 코드를 추가할 필요가 없습니다.
하지만 항상 그런건 아닙니다. 여기서 센스있는 분들이라면 눈치를 채셨겠죠. if 문을 부정형(일치하지않는경우)조건으로 하는 경우가 많습니다.
예를들어 if a != 0, 인 조건이 주어지면 else 는 당연히 a == 0 인 경우죠? 만약 이때 else가 없다면 if 에서 나온 아래 코드는 자연스럽게 a == 0 인경우를 전제로 하는 코드일 겁니다.
넘어가서 try except 문은 보통 예외처리를 하기 위한 것이라고 다들 알고 계실텐데요, except는 그럼 try문에 걸려있는 코드들이 실행된다면 except문이 실행될까요?
아니죠.
말그대로 예외이기때문에, try에 코드들이 실행되지 않을 경우에만 실행됩니다.
F는 while loop에 걸려있는 가장 마지막에 실행되는 코드구문입니다.
RIP........
마무리하며:
1. while을 분명히 배웠지만 나는 이해하지못했었다.
2. 그림을 그리며 설명해준 동기 강승연님께 정말 감사하다.
3. 블로깅은 논문보다 재밌다.^^
승연님과 치오님 두분 다 감사합니다~ 잘 읽었습니다 ㅎㅎ