brunch

You can make anything
by writing

C.S.Lewis

by 박경아 Mar 19. 2021

11. 조건문과 반복문 쓰기

파이썬으로 데이터 분석하기

캐글에서 몇 가지 프로젝트를 해보면서 느낀 점은 조건문과 반복문이 생각보다 쓰기 어려웠다는 점이다. 어떻게 하면 원하는 코드를 쓸 수 있는 지 한 번 공부하는 것으로는 부족했다. 그래서 다른 노트북을 보며 반복문을 쓴 부분이나 반복문을 포함한 함수 등 필요한 부분을 카피해 와서 해결했다.


한 번에 모든 것을 해결할 순 없다. 일단 앞서 배운 함수와 마찬가지로 기본 개념과 구조를 잘 익힌 다음에 다양한 예문을 통해 감을 길러 보는 수 밖에! 마치 수학 개념을 배워서 A 혹은 B 단계 문제는 풀 수 있지만 C 단계나 어려운 문제를 풀려면 한 번에 풀리지 않고, 그 풀이과정을 고민해야 하는 것과 같다는 생각이 들었다. 단 번에 코드가 나오지는 않으니까 말이다. 

이번 조건문과 반복문에는 가능하면 많이 사용되는 대표적 예문(유형?)들을 사용할 예정이니 우선 이것들을 잘 이해하고 기억해 둔다면 점차 상황에 맞춰 자신에게 필요한 코드를 써나갈 있으리라 생각한다. 



(1) if 조건문


우선 if 조건문이다. if 조건문은 조건에 따라 실행 내용이 결정되는 구문으로 if 조건이 참이면 함수와 마찬가지로 콜론(:) 아래 들여쓰기 한 코드가 실행되고, 참이 아니면 실행되지 않는다. if로 한 가지 상황(조건)을 만들어도 되고, elif(else if)와 else 블록을 사용해 그 외의 상황일 때는 어떤 내용을 실행해야 하는 지 조건을 추가할 수 있다. 


다음 예문은 조건이 참임을 전제로 실행되는 간단한 if 조건문이다. 조건이 되는 money를 앞서 불린형 데이터를 사용해 참이라고 정의했으므로, if 조건문은 참이 되어 콜론 아래 내용이 실행된다.


if 조건문의 구조를 살펴보면 다음과 같다. 조건문이라면 if로 시작해야 하고, elif와 else는 추가해도 되고 안 해도 되는 선택사항이다. elif 구문은 원하는 만큼 그 개수를 추가할 수 있는 반면, else는 사용한다면 마지막에 한 번만 사용할 수 있다.

if 조건문의 구조


조건을 많이 추가해서 if - elif - else를 모두 쓰는 구문을 만들어보자. 조건이 참이 되는 블록의 구문이 실행될 것이고 elif나 else가 생략된다고 해서 오류가 뜨지 않지만, 참이 되는 조건이 하나도 없으면 아무것도 실행되지 않을 것이다. 또한, 조건문은 조건이 참(True)임을 전제로 하므로 참 또는 거짓을 결과로 반환하는 불린형 연산자와 함께 많이 쓰인다. 


다음으로, 리스트에서 숫자를 하나씩 꺼내 자연수로만 구성된 새로운 리스트를 만드는 상황을 가정해보자. 이미 리스트의 이해에서 조건문을 간단하게 넣은 예문을 보았지만, 리스트 이해와 함께 쓰면 조건문을 한 줄로 간결하게 사용할 수 있다. 

조건문 vs. 리스트 이해에서 조건문 사용



(2) for 반복문


두 번째로 for 반복문이다. 파이썬은 특정 코드를 반복하는 방법(Loop)으로 두 가지를 제공하는 데 하나가 for이고 또 다른 하나가 while이다. for 구문은 특정 범위 내에서 정의된(한정된) 루프를 돌릴 때 사용하는 것으로 앞서 리스트 이해에서도 for를 사용한 것과 같이 for을 실행할 대상이 리스트 안의 요소 등으로 한정된 경우에 사용한다. 


for 반복문의 구조

for item in list: 
     실행내용
    실행내용


item은 앞서 이야기 한대로 개별 데이터를 가리키는 변수의 이름으로 편한대로 지어서 사용할 수 있다. 리스트는 루프를 적용할 데이터들로 리스트나 튜플과 같은 데이터 집합될 수 있을 것이다. 아래 몇 가지 예를 살펴보자.


먼저, 리스트 안의 요소들을 차례로 모두 프린트하는 반복문이다. 루프를 적용할 리스트로 리스트를 그대로 사용해도 되고, 리스트에 변수를 할당해 그 이름을 사용해도 된다. 

리스트 안의 요소를 차례로 프린트 하는 반복문


다음으로 리스트 안에 모든 값을 모두 제곱으로 만드는 반복문을 만들어 보자. 새롭게 생성되는 리스트 값을 담을 새로운 리스트가 필요하므로 for 반복문을 만들기 전에 square라는 새로운 리스트를 만들었다. 그리고 실행 내용에 문자열의 append 함수를 사용해 새롭게 만들어지는 값들을 하나씩 추가했다. 물론 앞서 배운 리스트의 이해로 간단하게 새로운 리스트를 만들 수도 있다.

새로운 리스트를 만드는 반복문


마지막으로 range() 함수와 함께 실행내용을 반복할 횟수를 정하는 경우이다. range 함수는 특정 범위 안의 수 리스트를 자동으로 채워주는 함수로 for 구문과 함께 실행내용을 반복할 횟수를 정하는 데 유용하다.참고로 range() 함수의 끝값은 기본값으로 적어야 하고, 시작값이나 값들 사이의 간격은 적어도 되고 안 적어도 된다. 시작값을 적지 않으면 0부터 리스트가 만들어지고, 값들 사이의 간격은 1로 지정된다. 

range( ) 함수를 사용해 실행내용을 반복할 횟수를 정하는 경우


예를 들어 웹사이트에서 여러 게시물을 수집하고자 하는 경우 게시글을 수집하기 위한 함수를 만들고, 수집하고자 하는 게시물 수 만큼 함수를 반복하고 싶을 때 for와 range 함수 짝궁을 사용해 해결할 수 있을 것이다. 



(3) while 반복문


이제 마지막으로 while 반복문이다. for 구문이 반복을 위한 명확한 값 또는 범위가 주어졌다면, while 구문은 몇 번 반복할 지 확실하지 않지만 조건이 참일 때까지 반복할 때 주로 사용한다. 


아래 간단한 예문은 i가 10보다 작을 때까지 i를 프린트하라는 (뻔히? 예측가능한) 간단한 반복문이지만 특정 조건이 만족될 때까지 무한대로 루프를 돌리고 싶다면 while 구문을 사용해야 할 것이다.

while 반복문

예문에서 while 구문 안의 흐름을 살펴보면 i 라는 변수는 0에서 시작하고 i < 10보다 작을 동안, 즉 조건문과 마찬가지로 해당 조건이 참일 동안 들여쓰기한 부분의 코드가 실행된다. 조건이 참일 동안 i는 프린트되고, 그리고 i 변수는 1씩 들어난다. 만약 조건이 더 이상 참이 아니라면 while 구문을 끝이 날 것이다.



지금까지 if 반복문과 for, while 구문을 정리해봤다. 이들 구문은 단독으로 사용해도 되지만 앞서 본 것처럼 실제로는 리스트 이해나 함수와 함께 많이 쓰인다. 마지막으로 반복문과 조건문을 모두 포함한 함수와 리스트 이해를 살펴보자.

반복문과 조건문을 모두 넣은 함수 vs. 반복문과 조건문을 모두 넣은 리스트 이해



조건문, 반복문 연습하러 가기

https://www.kaggle.com/kyungapark/python-basic-if-loop-statement





* 참고자료

캐글 강의 https://www.kaggle.com/learn/overview

점프투파이썬 https://wikidocs.net/book/1

파이썬 초보 학습자를 위한 4시간에 배우는 파이썬 기초문법

https://joshua-mobile-choi-1756.trinket.io/python-3-4#/tasks/task-1-print-statement

How to think like a computer scientist : Learning with Python 3

http://openbookproject.net/thinkcs/python/english3e/

매거진의 이전글 10. 새로운 리스트를 만드는 방법,  리스트 이해
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari