파이썬을 대표하는 반복문인 for문과 while문은 프로젝트를 진행할 때 고민인 되는 부분인 것 같습니다. 단순히 해당 작업을 반복할 뿐인데, ‘for’과 ‘while’ 중 어떤 문법을 활용하는게 더 도움이 될 수 있을까요.
‘어떤 목적을 달성하기 위해서 코드를 만들 때, 단순 작업을 반복할 일이 많을까요.’
파이썬을 공부하기 전에 했던 여러 생각들 중 하나입니다. 코드의 진행은 위에서 아래로 내려가며 정해진 명령을 수행하게 됩니다. 그렇다면 비슷한 작업을 이어서 진행해야 한다면 어떻게 코드를 작성하게 될까요.
예를 들어, 셀레니움(selenium)을 이용해 인터넷 데이터를 가져온다고 생각해 보겠습니다. 웹페이지에 존재하는 html, css, xpath등의 요소를 이용해 정해진 데이터를 가져오게 됩니다.
몇번 시도하게 되면, 해당 요소들의 공통적인 부분을 찾을 수 있습니다. 예를 들어, css selecotr의 경우, 각 대상들은 번호의 차이만 존재하는 경우도 있습니다. 이럴 경우라면 당연히 대상 숫자만 달라지는 반복문을 활용하는 것이 좋습니다.
여기서 살짝 고민을 합니다. for문을 사용할까, while문을 사용할까 입니다. 간단히 개념으로 접근하면 횟수를 정한 for문, 특정 조건에 중점을 맞춘 while문으로 차이점을 생각해 볼 수 있습니다.
- for문 : 특정한 횟수를 지정하여 반복작업을 이용할 때 주로 사용.
- while문 : 특정조건의 참, 거짓을 이용하여 작업을 반복할 때 주로 사용.
코딩을 하며 익숙해지는 구글링에서도 비슷한 주제에 대해 언급하는 의견들을 만나 볼 수 있습니다. 많은 사람들이 비슷한 생각을 하는 것 같습니다.
파이썬 for문, while문 어느 것을 사용할까요.
초반 파이썬의 반복문을 익히는 중이라면, 둘 다 사용해 보세요.
파이썬 문법과 활용에 대해 익히는 중이라면 for문, while문을 모두 사용할 것을 추천합니다. 코드를 반복하여 실행해야하는 상황이라면 두가지 모두 적용할 수 있을 가능성이 높기 때문입니다.
새로운 기술을 익히는 것은 관련된 다양한 경험을 쌓아가는 것을 의미합니다. 프로그래밍 언어를 익히는 가장 좋은 방법은 반복을 통해 습관으로 만드는 것이라고 합니다. 일정한 패턴을 가지는 것이죠.
하지만, 이제 그 개념과 활용에 대해서 생각해보는 단계라면 정형화된 패턴은 도움이 되지 않을 수 있을 것입니다. 이 단계에서는 부드럽고 유연한 사고의 틀을 구성하는게 더 중요하기 때문입니다. (물론, 개인적인 생각입니다.)
파이썬은 다른 언어에 비해서 상당히 유연하다고 합니다. 어떤 상황을 해결하는 코드의 진행이 사람마다 차이를 보일 수 있다는 것을 의미하며, 이는 정해진 방법이 존재하지 않는다는 것을 의미할 수도 있습니다.
따라서, 한 가지 상황을 여러 방법으로 해결하거나, 여러 상황에 대해서 비슷한 코드로 문제를 해결할 수 있는 방식을 생각해 보는 과정은 학습에 많은 도움이 될 수 있습니다. 항상 해답을 찾을 수 없을지도 모르지만, 틀려보는 것도 좋은 경험이 될 수 있습니다.
어떤 문제를 해결하는 상황인가요. 상황에 따라 달리 선택할 수 있습니다.
개념으로 접근할 수 있는 상황인 경우.
반복 작업이 필요한 상황이 어떤 경우인지에 대해 생각해 볼 수 있습니다. 앞서 언급한 for문과 while문의 활용 상황에서 기본적인 차이를 나타내기 때문입니다. 비슷한 작업을 정해진 횟수만큼 진행한다면 for문, 횟수보다는 조건을 탐색하고 원하는 조건이 나타날 때까지라면 while문을 선택하는 것이 좋습니다.
무한 루프에 대해서 while문을 주로 사용하지만 꼭 그럴 필요는 없습니다. 충분히 큰 횟수를 반복하여 결괏값을 얻을 수 있다면 for문을 사용할 수도 있습니다. 해당 부분은 프로그래머의 판단에 따라 달라질 수 있겠죠.
중첩으로 사용하는 상황인 경우.
주어진 문제 상황에 따라 하나의 반복문으로 해결할 수 있는 경우가 있습니다. 단순 반복 작업을 진행하면 끝인 경우입니다. 반면, 전체의 반복 속에서 또 하나의 반복을 필요로 하는 경우도 있습니다.
이 경우라면 두가지 문법를 모두 사용하는 것을 추천합니다. 코딩을 진행하면 언제나 오류 상황을 만날 수 있습니다. 해당 오류를 해결하여 다시금 정상작동을 진행해야만 합니다.
처음 코딩을 진행할 때는 무서운 속도로 키보드를 두드리는 본인이 있을 수 있습니다. 하지만, 오류가 발생해 고쳐야 하는 상황에서 다른 사람이 될 수 있습니다. 다시 말해, 스스로 만들어낸 코드들이 낯설게 느껴지는 순간입니다.
해당 상황에서 가장 빛을 발하는 것은 ‘주석’으로 처리한 메모라 할 수 있습니다. 하지만, 주석이 없는 경우도 많습니다. 처음 코드를 작성할 때는 모든 것이 머리에 있으니까 말이죠. 시간이 지나면 사라지는 마법을 느낄 수 있습니다.
반복문의 경우, 그 조건에 의해 오류가 발생하는 경우가 많습니다. 따라서, 해당 코드들의 수정은 조건을 잘 찾아야 합니다. 단순 중첩의 경우보다 for문, while문을 같이 사용한 경우에 조건 내용들이 더 잘 보였던 것 같습니다.