조건문으로 코드에 생각을 심어보기

코드를 처음 작성할 때는 대부분 입력한 순서대로 결과가 실행됩니다. 숫자를 출력하고, 계산하고, 문장을 보여주는 식입니다. 그런데 프로그램이 항상 같은 방식으로만 동작하면 생각보다 할 수 있는 일이 많지 않습니다.

예를 들어 로그인 기능을 만든다고 가정해보겠습니다. 비밀번호가 맞으면 접속을 허용하고, 틀리면 다시 입력하게 만들어야 합니다. 쇼핑몰에서는 재고가 있으면 주문을 받고, 없으면 품절 메시지를 보여줘야 합니다. 게임에서는 체력이 0이 되면 종료 화면이 나타나야 합니다.

이런 상황에서는 프로그램이 스스로 조건을 판단해야 합니다. 조건문은 프로그램이 상황에 따라 다른 행동을 하도록 만드는 문법입니다.

Python에서는 주로 if, elif, else를 사용합니다. 반복문이 같은 작업을 여러 번 실행하는 구조였다면, 조건문은 상황에 따라 서로 다른 결과를 만들도록 흐름을 나누는 구조에 가깝습니다.

조건문이 들어가는 순간부터 프로그램은 단순 실행 파일이 아니라 입력과 상황에 반응하는 구조로 바뀌기 시작합니다.

프로그램은 왜 조건을 판단해야 할까

조건문은 프로그램 흐름을 상황에 따라 바꾸기 위해 사용됩니다.

모든 코드가 항상 같은 결과만 출력한다면 프로그램은 단순 계산기에 가까운 수준에 머무르게 됩니다. 실제 서비스나 프로그램은 대부분 상황에 따라 다른 반응을 해야 합니다.

예를 들어 사용자의 나이에 따라 가입 가능 여부를 나눌 수도 있고, 점수에 따라 합격 여부를 판단할 수도 있습니다. 특정 데이터가 존재할 때만 기능을 실행하는 경우도 많습니다.

이런 흐름은 결국 “조건에 따라 실행 결과를 바꾼다”라는 개념으로 연결됩니다.

조건문이 중요한 이유는 프로그램 흐름 자체를 제어할 수 있기 때문입니다. 입력값, 상태, 데이터 조건에 따라 서로 다른 코드를 실행하게 만들 수 있습니다.

처음에는 단순한 분기처럼 보일 수 있지만, 실제 개발에서는 거의 모든 기능이 조건 판단을 기반으로 동작합니다. 로그인, 검색, 추천 시스템, 알림 기능까지 대부분 조건문을 사용합니다.

그래서 조건문을 이해하기 시작하면 코드가 단순 실행 단계를 넘어 상황을 판단하는 구조로 바뀌기 시작합니다.

if문은 가장 기본적인 판단 구조다

if문은 조건이 참일 때만 코드를 실행하는 가장 기본적인 조건문입니다.

예를 들어 시험 점수가 60점 이상이면 합격 메시지를 출력하는 상황이 있습니다. 이런 경우 if 조건을 이용해 점수를 검사할 수 있습니다.

조건문의 핵심은 결과가 참(True)인지 거짓(False)인지 판단하는 것입니다.

그래서 조건문에서는 비교 연산자가 함께 사용됩니다.

비교 방식 의미
== 두 값이 같은지 비교
!= 두 값이 다른지 비교
> 왼쪽 값이 더 큰지 비교
< 왼쪽 값이 더 작은지 비교
>= 크거나 같은지 비교

입문자는 여기서 ===를 가장 많이 헷갈립니다. =는 값을 저장하는 대입 연산자이고, ==는 두 값이 같은지 비교하는 연산자입니다.

실제로 조건문을 처음 배울 때 =를 사용해서 오류가 발생하는 경우가 굉장히 많습니다. 처음에는 작은 차이처럼 보이지만 역할은 완전히 다릅니다.

또 Python에서는 들여쓰기도 매우 중요합니다. 조건문 아래 코드가 들여쓰기 되지 않으면 원하는 흐름으로 실행되지 않을 수 있습니다.

조건문을 배울 때는 “조건을 만든다”보다 “참과 거짓을 검사한다”라고 이해하는 편이 훨씬 자연스럽습니다.

조건문

elif와 else가 추가되면 흐름이 달라진다

실제 프로그램은 하나의 조건만 검사하는 경우보다 여러 상황을 동시에 나누어 처리하는 경우가 훨씬 많습니다.

이때 사용하는 것이 elifelse입니다.

elif는 앞선 조건이 거짓일 때 새로운 조건을 추가로 검사합니다. 여러 상황을 순서대로 나누어 처리할 때 사용됩니다.

예를 들어 시험 점수를 등급으로 나눈다고 가정해보겠습니다.

  1. 90점 이상이면 A
  2. 80점 이상이면 B
  3. 70점 이상이면 C
  4. 나머지는 D

이런 흐름은 하나의 if만으로 처리하기 어렵습니다. 그래서 elif를 이용해 여러 조건을 순서대로 검사합니다.

반대로 else는 앞의 모든 조건이 거짓일 때 마지막으로 실행됩니다. 예외 처리나 기본 결과를 출력할 때 많이 사용합니다.

입문자는 조건문을 작성할 때 순서를 자주 실수합니다. 하지만 조건문은 위에서 아래로 순서대로 검사됩니다.

예를 들어 70점 이상 조건을 먼저 검사하면, 90점 이상도 이미 70점 이상 조건에 포함되기 때문에 아래 조건은 실행되지 않을 수 있습니다.

그래서 조건문에서는 어떤 조건을 먼저 검사할지도 중요합니다.

조건문 안에서는 어떤 값들이 비교될까

조건문에서는 숫자만 비교하는 것이 아닙니다. 문자열, 상태값, 여러 조건의 조합도 함께 비교할 수 있습니다.

예를 들어 사용자가 입력한 아이디가 특정 문자열과 같은지 검사할 수 있습니다. 또는 상품 상태가 “판매중”인지 확인할 수도 있습니다.

숫자 비교에서는 보통 크기 비교가 자주 사용됩니다. 문자열 비교에서는 값이 정확히 일치하는지 확인하는 경우가 많습니다.

여기서 자주 등장하는 것이 논리 연산자입니다.

논리 연산자는 여러 조건을 함께 묶을 때 사용합니다.

  • 나이가 20 이상이면서 회원인 경우
  • 관리자이거나 운영자인 경우
  • 로그인 상태가 아니면서 접근 권한이 없는 경우

이런 조건은 하나만 검사해서는 해결되지 않습니다. 여러 조건을 동시에 판단해야 합니다.

입문 단계에서는 조건이 길어질수록 헷갈리기 쉽습니다. 그래서 처음에는 조건을 짧게 나누어 작성하는 습관이 중요합니다.

조건문을 잘 작성하는 사람들은 복잡한 로직도 작은 조건 여러 개로 나누어 처리하는 경우가 많습니다.

반복문과 조건문은 실제 코드에서 함께 사용된다

실제 프로그램에서는 반복문과 조건문이 거의 항상 함께 사용됩니다.

예를 들어 학생 점수 목록을 반복하면서 60점 이상만 출력할 수 있습니다. 또는 상품 목록을 검사하면서 특정 가격 이상의 상품만 따로 저장할 수도 있습니다.

이런 구조는 데이터 처리에서 매우 자주 등장합니다.

반복문은 데이터를 하나씩 가져오는 역할을 하고, 조건문은 그 데이터가 어떤 조건에 맞는지 판단합니다.

즉, 반복문이 작업을 반복한다면 조건문은 그 안에서 무엇을 처리할지 결정하는 역할에 가깝습니다.

역할 담당 기능
반복문 데이터를 반복 처리
조건문 조건에 따라 실행 분기
반복문 + 조건문 필요한 데이터만 선택 처리

실제 개발에서는 이런 조합이 기본 패턴처럼 사용됩니다.

예를 들어 검색 결과 필터링, 로그인 검사, 추천 알고리즘, 데이터 분석 코드까지 대부분 반복과 조건 구조를 함께 사용합니다.

반복문과 조건문을 함께 이해하기 시작하면 코드 흐름 자체를 읽는 감각도 훨씬 좋아집니다.

조건문 구조

조건문을 이해하면 코드가 단순 실행을 넘어선다

조건문은 프로그램이 상황에 따라 다른 결과를 만들도록 하는 핵심 구조입니다.

조건문을 배우기 전까지의 코드는 입력된 순서대로만 실행되는 경우가 많습니다. 하지만 조건문이 들어가는 순간부터 프로그램은 상황에 따라 다른 반응을 하기 시작합니다.

예를 들어 같은 버튼을 눌러도 로그인 상태에 따라 다른 화면이 나타날 수 있습니다. 같은 데이터라도 조건에 따라 다른 결과로 처리될 수도 있습니다.

이런 구조가 결국 프로그램의 판단 역할을 담당합니다.

물론 실제로 코드가 생각하는 것은 아닙니다. 하지만 개발자가 조건을 설계하면서 프로그램이 특정 상황에서 어떤 행동을 해야 하는지 결정하게 됩니다.

그래서 조건문은 단순 문법 이상의 의미를 가집니다. 프로그램 흐름 자체를 설계하는 시작점에 가깝습니다.

이후 함수(Function)를 배우게 되면 조건문은 더 자주 등장하게 됩니다. 특정 상황에서만 함수를 실행하거나, 입력값에 따라 다른 결과를 반환하는 구조가 필요하기 때문입니다.

또 알고리즘 문제 풀이에서도 조건문은 거의 빠지지 않습니다. 문제를 해결하는 과정 자체가 결국 여러 조건을 판단하는 흐름으로 구성되기 때문입니다.

반복문과 조건문까지 이해하기 시작하면 Python 기초 문법의 핵심 흐름은 거의 잡히기 시작했다고 볼 수 있습니다.

반복문의 힘: 같은 코드를 100번 쓰지 않는 방법

반복문

처음 Python을 배우면 비슷한 코드를 계속 반복해서 작성하는 일이 생각보다 많습니다. 숫자를 여러 번 출력하거나, 리스트 안의 데이터를 하나씩 처리하거나, 같은 계산을 반복할 때 특히 그렇습니다. 처음에는 단순 복사로 해결할 수 있어 보이지만, 코드가 길어질수록 수정도 어려워지고 실수도 빠르게 늘어납니다.

예전에 숫자 1부터 100까지 출력하는 코드를 직접 여러 줄 작성해본 적이 있습니다. 처음에는 단순해 보였는데 숫자를 하나씩 수정하다 보니 금방 비효율적이라는 걸 느끼게 되더라고요. 그때 반복문이 왜 필요한지 자연스럽게 이해하게 됐습니다.

반복문은 같은 작업을 여러 번 실행하도록 만드는 문법입니다. Python에서는 주로 for문while문을 사용합니다. 반복문을 배우기 시작하면 코드가 짧아지는 것뿐 아니라, 컴퓨터에게 반복 작업을 대신 시키는 감각 자체가 생기기 시작합니다.

반복문은 왜 필요한가

많은 사람이 반복문을 단순히 코드를 줄이는 기능 정도로 생각합니다. 하지만 실제로는 반복되는 작업 자체를 규칙으로 구조화하는 문법에 더 가깝습니다.

예를 들어 같은 print() 문장을 여러 번 작성한다고 가정해보겠습니다. 처음에는 큰 문제가 없어 보이지만, 출력 횟수가 늘어나거나 수정 사항이 생기면 코드 관리가 급격히 번거로워집니다. 같은 코드를 반복해서 작성하는 방식은 실수 가능성도 커집니다.

반복문은 이런 문제를 해결합니다. “이 작업을 여러 번 반복한다”라는 규칙 자체를 코드로 표현할 수 있기 때문입니다.

실제 개발에서는 데이터를 하나씩 처리하거나, 여러 사용자의 정보를 검사하거나, 파일 목록을 순서대로 읽는 상황이 매우 자주 등장합니다. 반복문이 없다면 이런 작업을 수작업으로 처리해야 합니다.

Python 공식 문서에서도 반복문은 핵심 제어 흐름 문법으로 다뤄집니다. 반복문을 배우는 순간부터 코드는 단순 계산기가 아니라 자동화 도구처럼 움직이기 시작합니다.

for문은 정해진 대상을 하나씩 처리할 때 쓴다

반복 횟수나 반복 대상이 정해져 있다면 대부분 for문이 더 적합합니다.

Python 입문자가 가장 먼저 배우는 반복문도 보통 for문입니다. for문은 리스트나 문자열처럼 순서가 있는 데이터를 하나씩 꺼내 처리할 때 사용합니다.

예를 들어 학생 이름 목록이 들어 있는 리스트가 있다면, for문은 이름을 하나씩 가져와 출력할 수 있습니다. 개발에서는 이런 방식으로 데이터를 순서대로 처리하는 일이 매우 많습니다.

특히 Python의 for문은 비교적 읽기 쉬운 편입니다. 다른 언어처럼 초기값이나 증가식을 복잡하게 직접 작성하지 않아도 되기 때문입니다. 그래서 입문자도 흐름을 이해하기 어렵지 않습니다.

여기서 자주 함께 등장하는 것이 range() 함수입니다. range()는 특정 숫자 범위를 반복할 수 있도록 만들어줍니다.

표현 실제 생성 범위
range(5) 0 ~ 4
range(1, 5) 1 ~ 4
range(1, 10, 2) 1, 3, 5, 7, 9

입문자는 여기서 “왜 5까지가 아니라 4까지인가” 헷갈리는 경우가 많습니다. Python의 범위는 시작 숫자를 포함하고 마지막 숫자는 포함하지 않는 방식이 기본이기 때문입니다.

이런 구조에 익숙해지면 “10번 반복하기”, “1부터 100까지 출력하기” 같은 작업도 쉽게 처리할 수 있습니다.

실제 개발에서도 리스트 처리, 데이터 반복, 파일 탐색 같은 작업에서 for문은 가장 자주 사용됩니다.

while문은 조건이 참인 동안 계속 실행된다

반복 횟수가 아니라 종료 조건이 중요한 상황에서는 while문이 더 적합합니다.

while문은 특정 조건이 참인 동안 반복을 계속 실행합니다.

예를 들어 사용자가 올바른 비밀번호를 입력할 때까지 계속 입력을 받는 상황이 있습니다. 이런 경우에는 반복 횟수를 미리 알 수 없습니다. 이럴 때 while문이 적합합니다.

반대로 for문은 반복 횟수나 대상이 정해져 있는 상황에서 많이 사용됩니다.

  • 반복 대상이나 횟수가 정해져 있으면 for문
  • 종료 조건을 기준으로 반복하면 while문

다만 while문은 입문자가 가장 많이 실수하는 문법 중 하나이기도 합니다. 조건이 계속 참으로 유지되면 반복이 끝나지 않는 무한 반복 상태가 발생할 수 있기 때문입니다.

실제로 처음 while문을 배울 때 증가 코드를 빼먹어서 프로그램이 계속 실행된 적이 있습니다. 프로그램 창이 멈춘 것처럼 보이는데 원인을 찾지 못해서 당황하는 경우가 꽤 많습니다.

예를 들어 반복 횟수를 증가시키는 코드를 작성하지 않으면 조건이 바뀌지 않습니다. 그러면 프로그램은 종료 시점을 찾지 못하고 계속 반복됩니다.

그래서 while문에서는 “언제 반복이 끝나는가”를 먼저 생각하는 습관이 중요합니다.

반복문 조건

반복문 안에서 값은 어떻게 변하는가

반복문은 단순 실행이 아니라 상태가 계속 변하는 구조입니다.

가장 대표적인 예시는 누적 합계입니다. 반복문은 숫자를 하나씩 가져오면서 기존 값에 계속 더할 수 있습니다. 이런 방식으로 총합, 평균, 개수 계산 등을 처리합니다.

또 자주 등장하는 개념이 카운트입니다. 특정 조건을 만족하는 데이터 개수를 세거나, 반복 횟수를 기록하는 데 사용됩니다.

입문자는 보통 “왜 값이 계속 바뀌는지” 헷갈려합니다. 하지만 실제로는 반복이 한 번 실행될 때마다 변수에 새로운 값이 다시 저장되는 구조입니다.

다음 개념들이 반복문에서 가장 자주 사용됩니다.

  1. 누적 합계 계산
  2. 반복 횟수 카운트
  3. 현재 위치 추적
  4. 조건 만족 개수 세기

이 흐름을 이해하면 이후 리스트 처리나 데이터 분석 코드도 훨씬 쉽게 읽히기 시작합니다. 특히 반복문 안에서 변수 상태가 어떻게 변하는지 직접 출력해보는 연습이 도움이 됩니다.

break와 continue로 반복 흐름을 조절한다

실제 개발에서는 단순 반복만 수행하는 경우보다, 반복 중 흐름을 바꾸는 경우가 훨씬 많습니다.

이때 사용하는 문법이 breakcontinue입니다.

문법 역할
break 반복 자체 종료
continue 현재 반복만 건너뛰기

break는 원하는 값을 찾았을 때 더 이상 반복할 필요가 없는 상황에서 사용합니다.

반대로 continue는 특정 조건의 데이터만 제외하고 처리할 때 자주 사용됩니다.

입문 단계에서는 둘의 차이를 헷갈리는 경우가 많습니다. 하지만 기준은 단순합니다.

break는 반복 종료이고, continue는 현재 반복만 건너뛰기입니다.

실제 개발에서는 사용자 입력 검사, 데이터 필터링, 검색 기능 구현 등에서 매우 자주 등장합니다. 특히 데이터 양이 많아질수록 필요 없는 반복을 빨리 종료하는 것이 성능에도 영향을 줄 수 있습니다.

반복문을 이해하면 조건문 학습이 쉬워진다

반복문은 같은 작업을 여러 번 실행하는 구조입니다. 하지만 실제 프로그램은 단순 반복만 하지 않습니다. 반복하면서 특정 조건에 따라 다른 동작을 수행합니다.

예를 들어 학생 점수를 반복해서 검사하면서 60점 이상만 출력할 수도 있습니다. 또는 상품 목록을 반복하면서 특정 가격 이상의 상품만 필터링할 수도 있습니다.

이때 필요한 것이 조건문입니다.

조건문은 코드에 판단 기준을 넣는 역할을 합니다. 반복문과 조건문이 결합되면 프로그램은 단순 반복을 넘어서 상황에 따라 다르게 동작하는 구조를 가지게 됩니다.

실제 개발에서는 반복문과 조건문이 거의 항상 함께 사용됩니다. 반복문만으로는 단순 자동화에 머물고, 조건문만으로는 많은 데이터를 효율적으로 처리하기 어렵기 때문입니다.

그래서 Python 기초를 공부할 때도 반복문 다음 단계로 조건문을 배우는 흐름이 자연스럽습니다. 반복 구조를 이해한 상태에서 조건문을 배우면 코드 흐름 자체를 훨씬 쉽게 이해할 수 있습니다.

다음 글에서는 if, elif, else를 이용해 코드가 스스로 판단하도록 만드는 조건문 구조를 살펴보게 됩니다.