코딩을 할 때, 우리는 단순히 명령을 순서대로 실행하는 것을 넘어, 특정 조건에 따라 다른 동작을 하거나 특정 작업을 여러 번 반복해야 할 때가 많습니다. 이때 빛을 발하는 것이 바로 조건문과 반복문입니다. 이 두 가지는 프로그래밍의 흐름을 제어하는 핵심 도구이며, 모든 프로그램의 근간이 됩니다.
핵심 요약:
- 주제: 파이썬 조건문과 반복문의 기초 및 활용법
- 목표:
if/elif/else,for/while구문을 이해하고 간단한 메모장 프로그램 구현 - 대상: 파이썬 프로그래밍 입문자
- 준비물: 파이썬 3.11 설치된 개발 환경
- 결과물: 직접 실행 가능한 미니 메모장
.py파일
안녕하세요! 바이브 코더입니다. 저는 10년의 취미 코딩과 3년의 현업 경험을 통해 파이썬이 얼마나 강력하고 유연한 언어인지 체감하고 있습니다. 특히 데이터 분석이나 자동화 스크립트를 짤 때, 조건문과 반복문은 마치 손과 발처럼 없어서는 안 될 존재입니다. 이번 장에서는 파이썬의 조건문과 반복문을 배우고, 이를 활용하여 여러분만의 미니 메모장 프로그램을 만들어보겠습니다. 코딩을 전혀 모르는 분들도 쉽게 따라오실 수 있도록 친근하고 명확하게 설명해 드릴게요. 클로드 사용을 위한 기본 설정을 마쳤다면, 바로 시작해봅시다.
조건문이란 무엇이며 왜 필요한가요?
조건문은 특정 상황에 따라 프로그램의 동작을 다르게 만드는 데 필수적인 코드 블록입니다.
우리는 일상생활에서도 수많은 조건적인 판단을 합니다. ‘배고프면 밥을 먹는다’, ‘비가 오면 우산을 챙긴다’ 와 같은 것들이죠. 프로그래밍에서도 이와 같습니다. 예를 들어, 사용자가 입력한 나이가 19세 이상인지 확인하여 성인 여부를 판단하거나, 특정 파일이 존재하는지에 따라 다른 메시지를 출력하는 등의 작업을 할 때 조건문을 사용합니다.
파이썬에서 조건문은 주로 if, elif (else if의 줄임말), else 키워드를 사용합니다. 이 키워드들을 통해 ‘만약 ~라면 이렇게 하고, 그게 아니라면 저렇게 해라’는 식으로 프로그램의 흐름을 제어할 수 있습니다.
if, elif, else 구문 살펴보기
가장 기본적인 형태는 if 문입니다. 조건이 참(True)일 때만 특정 코드를 실행합니다.
age = 25
if age >= 19:
print("당신은 성인입니다.")
이 코드가 하는 일: age 변수가 19 이상이면 “당신은 성인입니다.”를 출력합니다.
만약 조건이 거짓(False)일 때 다른 동작을 하고 싶다면 else를 사용합니다.
age = 15
if age >= 19:
print("당신은 성인입니다.")
else:
print("당신은 미성년자입니다.")
이 코드가 하는 일: age가 19 이상이 아니면 “당신은 미성년자입니다.”를 출력합니다.
여러 가지 조건을 순차적으로 검사하고 싶을 때는 elif를 사용합니다. elif는 여러 if 조건을 연결할 때 유용하며, 위에서부터 아래로 순서대로 조건을 검사하여 가장 먼저 참이 되는 블록만 실행합니다.
score = 85
if score >= 90:
print("학점은 A입니다.")
elif score >= 80:
print("학점은 B입니다.")
elif score >= 70:
print("학점은 C입니다.")
else:
print("학점은 D 또는 F입니다.")
이 코드가 하는 일: 점수에 따라 해당하는 학점을 출력합니다. 이 경우 85점이므로 “학점은 B입니다.”가 출력됩니다.
여기서 중요한 것은 조건문의 들여쓰기(Indentation)입니다. 파이썬은 들여쓰기로 코드 블록을 구분합니다. 탭(Tab)이나 스페이스바(Space bar) 4칸을 일관되게 사용하는 것이 좋습니다. 만약 들여쓰기가 잘못되면 에러 핸들링 기본기에서 다룰 IndentationError가 발생할 수 있습니다.
반복문: 코드를 효율적으로 반복하는 방법
반복문은 특정 코드를 조건에 따라 여러 번 실행하여 코드의 중복을 줄이고 효율성을 높입니다.
우리가 1부터 100까지 숫자를 출력해야 한다고 상상해 봅시다. print(1)부터 print(100)까지 100줄을 쓰는 것은 비효율적이고 지루합니다. 이럴 때 반복문이 강력한 힘을 발휘합니다. 파이썬에는 for 반복문과 while 반복문이 있습니다.
for 반복문: 정해진 횟수만큼 반복하기
for 반복문은 주로 컬렉션(리스트, 튜플, 문자열 등)의 요소를 하나씩 순회하거나, 정해진 횟수만큼 코드를 반복할 때 사용합니다. 저는 데이터 분석을 할 때 for 문으로 대량의 데이터를 처리하거나, 여러 파일의 내용을 읽어올 때 자주 사용합니다.
# 리스트의 모든 요소 출력
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
# 1부터 5까지 숫자 출력 (range 함수 사용)
for i in range(1, 6): # 1부터 (6-1)까지
print(i)
이 코드가 하는 일: 첫 번째 for 문은 fruits 리스트의 각 과일 이름을 출력하고, 두 번째 for 문은 1부터 5까지의 숫자를 순서대로 출력합니다.
range() 함수는 반복 횟수를 지정할 때 매우 유용합니다. range(시작, 끝+1) 형태로 사용하며, 시작 값은 포함하고 끝 값은 포함하지 않습니다. 변수와 데이터 타입 다루기에서 다룬 리스트나 숫자 타입과 함께 사용하면 좋습니다.
while 반복문: 조건이 만족하는 동안 반복하기
while 반복문은 특정 조건이 참(True)인 동안 코드를 계속해서 반복합니다. 조건이 거짓(False)이 되면 반복을 멈춥니다. 사용자 입력을 계속 받거나, 특정 상태가 될 때까지 기다리는 프로그램에서 유용하게 사용합니다.
count = 0
while count < 5:
print(f"현재 카운트: {count}")
count += 1 # count = count + 1과 같음
print("반복 종료!")
이 코드가 하는 일: count 변수가 5보다 작은 동안 현재 카운트 값을 출력하고 count를 1씩 증가시킵니다. count가 5가 되면 반복을 멈춥니다.
while 문을 사용할 때 가장 주의할 점은 무한 루프(Infinite Loop)입니다. 반복 조건이 항상 참이 되어 프로그램이 영원히 멈추지 않는 상황을 말합니다. 위 예시에서 count += 1 부분을 빠뜨리면 count는 계속 0이므로 프로그램은 무한히 실행될 것입니다. 이럴 땐 보통 Ctrl+C (맥에서는 Cmd+C)를 눌러 강제로 프로그램을 종료해야 합니다. 제 경험상, 초보자분들이 while 문에서 가장 많이 실수하는 부분이 바로 이 무한 루프입니다. 항상 반복을 멈출 수 있는 탈출 조건이 있는지 확인해야 합니다.
실전 프로젝트: 나만의 미니 메모장 만들기
조건문과 반복문을 활용하여 파일을 읽고 쓸 수 있는 간단한 콘솔 기반 메모장 프로그램을 직접 만들어봅니다.
이제 배운 조건문과 반복문을 활용하여 간단한 메모장 프로그램을 만들어봅시다. 이 메모장은 텍스트 파일을 저장하고, 저장된 메모 목록을 볼 수 있게 구성할 것입니다. 2026년 기준, 파이썬 표준 라이브러리만으로도 충분히 구현 가능하며, 별도의 GUI 라이브러리(예: tkinter) 없이 콘솔에서 실행되는 형태로 만듭니다. 저는 실제로 이런 간단한 스크립트를 만들어 개인적인 일정을 관리하거나, 급하게 기록할 내용이 있을 때 유용하게 사용했습니다. 이것이 바로 ‘자동화’의 시작이죠!
단계 1: 메모 파일 초기화 및 불러오기
메모를 저장할 파일을 생성하고, 기존 메모가 있다면 불러오는 기능부터 시작합니다. try-except 문을 사용하여 파일이 없을 경우 에러가 나지 않고 새로 생성되도록 처리합니다. 이는 에러 핸들링 기본기에서 더 자세히 다룰 내용입니다.
import os # 파일 시스템 작업을 위한 모듈
MEMO_FILE = "my_memos.txt"
def load_memos():
memos = []
if os.path.exists(MEMO_FILE): # 파일이 존재하는지 확인
with open(MEMO_FILE, "r", encoding="utf-8") as f:
for line in f: # 파일을 한 줄씩 읽어옴
memos.append(line.strip())
return memos
def save_memos(memos):
with open(MEMO_FILE, "w", encoding="utf-8") as f:
for memo in memos:
f.write(memo + "\n")
current_memos = load_memos()
print(f"{len(current_memos)}개의 메모를 불러왔습니다.")
이 코드가 하는 일: my_memos.txt 파일이 있으면 내용을 불러와 리스트에 저장하고, 없으면 빈 리스트를 반환합니다. save_memos 함수는 리스트의 메모를 파일에 저장합니다. os.path.exists()는 조건문과 함께 특정 조건(파일 존재 여부)을 확인하는 대표적인 예시입니다.
단계 2: 메모 추가 기능 구현
사용자가 새로운 메모를 입력하고 저장할 수 있도록 합니다.
def add_memo(memos):
new_memo = input("새로운 메모를 입력하세요 (종료: 'q'): ")
if new_memo.lower() != 'q': # 'q'가 아니면 메모 추가
memos.append(new_memo)
save_memos(memos)
print("메모가 추가되었습니다.")
else:
print("메모 추가를 취소합니다.")
# 예시 사용법:
# add_memo(current_memos)
이 코드가 하는 일: 사용자에게 메모를 입력받아 리스트에 추가하고 파일에 저장합니다. ‘q’를 입력하면 취소합니다.
단계 3: 메모 목록 보기 기능 구현
저장된 모든 메모를 번호와 함께 출력하여 사용자에게 보여줍니다. 여기서는 for 반복문이 사용됩니다.
def view_memos(memos):
if not memos: # 메모가 비어있는지 확인
print("저장된 메모가 없습니다.")
return
print("\n--- 나의 메모 목록 ---")
for i, memo in enumerate(memos): # enumerate로 인덱스와 값 동시 접근
print(f"{i+1}. {memo}")
print("----------------------\n")
# 예시 사용법:
# view_memos(current_memos)
이 코드가 하는 일: memos 리스트에 메모가 없으면 메시지를 출력하고, 있으면 각 메모를 번호와 함께 출력합니다. enumerate 함수를 사용하면 반복문에서 인덱스(번호)와 값을 동시에 편리하게 얻을 수 있습니다.
단계 4: 메인 메뉴와 프로그램 실행 루프
이제 위의 기능들을 하나의 프로그램으로 묶고, 사용자가 메뉴를 통해 원하는 작업을 선택할 수 있도록 while 반복문과 조건문을 결합합니다.
def main():
memos = load_memos()
running = True
while running:
print("메모장 프로그램")
print("1. 메모 보기")
print("2. 메모 추가")
print("3. 종료")
choice = input("원하는 작업을 선택하세요 (1-3): ")
if choice == '1':
view_memos(memos)
elif choice == '2':
add_memo(memos)
elif choice == '3':
print("메모장 프로그램을 종료합니다.")
running = False # 반복문 종료 조건
else:
print("잘못된 입력입니다. 다시 선택해주세요.")
if __name__ == "__main__":
main()
이 코드가 하는 일: 사용자에게 메뉴를 보여주고 선택을 받아 해당 기능을 실행합니다. '3'을 선택하면 프로그램이 종료됩니다. while running: 구문이 계속 실행되다가 running 변수가 False가 되면 반복을 멈춥니다.
if __name__ == "__main__": 이 구문은 이 파일이 직접 실행될 때만 main() 함수를 호출하라는 의미입니다. 파이썬 스크립트의 일반적인 관용구입니다.
완성 코드: 미니 메모장
위의 모든 코드를 합치면 다음과 같은 나만의 미니 메모장 프로그램이 완성됩니다. 이 코드를 memo_app.py라는 이름으로 저장하고 파이썬으로 실행해보세요!
import os
MEMO_FILE = "my_memos.txt"
def load_memos():
memos = []
if os.path.exists(MEMO_FILE):
with open(MEMO_FILE, "r", encoding="utf-8") as f:
for line in f:
memos.append(line.strip())
return memos
def save_memos(memos):
with open(MEMO_FILE, "w", encoding="utf-8") as f:
for memo in memos:
f.write(memo + "\n")
def view_memos(memos):
if not memos:
print("저장된 메모가 없습니다.")
return
print("\n--- 나의 메모 목록 ---")
for i, memo in enumerate(memos):
print(f"{i+1}. {memo}")
print("----------------------\n")
def add_memo(memos):
new_memo = input("새로운 메모를 입력하세요 (종료: 'q'): ")
if new_memo.lower() != 'q':
memos.append(new_memo)
save_memos(memos)
print("메모가 추가되었습니다.")
else:
print("메모 추가를 취소합니다.")
def main():
memos = load_memos()
running = True
while running:
print("\n--- 메모장 프로그램 ---")
print("1. 메모 보기")
print("2. 메모 추가")
print("3. 종료")
choice = input("원하는 작업을 선택하세요 (1-3): ")
if choice == '1':
view_memos(memos)
elif choice == '2':
add_memo(memos)
elif choice == '3':
print("메모장 프로그램을 종료합니다. 다음에 또 만나요!")
running = False
else:
print("잘못된 입력입니다. 1에서 3 사이의 숫자를 입력해주세요.")
if __name__ == "__main__":
main()
마치며: 흐름 제어의 달인이 되기 위한 첫걸음
이번 장에서는 파이썬의 조건문(if, elif, else)과 반복문(for, while)에 대해 자세히 알아보았습니다. 이 두 가지 개념은 모든 프로그래밍 언어의 기본 중의 기본이며, 프로그램을 원하는 대로 동작하게 만드는 데 핵심적인 역할을 합니다. 간단한 메모장 프로그램을 직접 만들어보면서 이론이 아닌 실전에서 어떻게 활용되는지 경험해보셨을 것입니다.
처음에는 복잡하게 느껴질 수 있지만, 꾸준히 코드를 작성하고 수정하며 반복하다 보면 자연스럽게 익숙해질 것입니다. 프로그래밍은 결국 문제를 작은 단위로 나누고, 조건과 반복을 통해 해결하는 과정의 연속입니다. 다음 장에서는 에러 핸들링 기본기를 통해 프로그램 실행 중 발생하는 오류를 어떻게 다루고 안정성을 높일 수 있는지 알아보겠습니다. 계속해서 배우고, 계속해서 코딩하세요!
자주 묻는 질문 (FAQ)
- Q1:
if문과elif문의 차이점은 무엇인가요? - A1:
if문은 독립적인 조건을 검사하지만,elif는 앞선if또는elif조건이 거짓일 때만 다음 조건을 검사합니다. 여러 조건 중 하나만 실행하고 싶을 때if-elif-else구조를 사용합니다. - Q2: 무한 루프는 어떻게 피할 수 있나요?
- A2:
while반복문 내에서 반복 조건을 변경하는 코드를 반드시 포함해야 합니다. 예를 들어, 카운터를 증가시키거나, 사용자 입력을 통해 반복을 종료하는 조건 등을 설정해야 합니다. (2026년 기준) - Q3:
range()함수는 어떻게 사용하나요? - A3:
range(시작, 끝+1)형태로 사용합니다.range(5)는 0부터 4까지,range(1, 6)은 1부터 5까지의 숫자를 생성합니다. 주로for반복문과 함께 사용되어 특정 횟수만큼 반복할 때 유용합니다. - Q4: 파이썬에서 들여쓰기가 왜 중요한가요?
- A4: 파이썬은 다른 언어와 달리 들여쓰기를 통해 코드 블록의 범위를 정의합니다. 들여쓰기가 잘못되면
IndentationError가 발생하며, 이는 문법 오류로 간주됩니다.
참고 자료
- [1] Python 공식 문서 — https://docs.python.org/ko/3/
- [2] Claude Code 공식 문서 — https://docs.claude.com/en/docs/claude-code/overview
#파이썬조건문, #파이썬반복문, #파이썬if, #파이썬for, #파이썬while, #파이썬기초, #파이썬입문, #미니메모장, #파이썬프로그래밍, #바이브코더
