"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
파이썬 프로그래밍에서 제어문은 무엇이며, 어떤 종류가 있나요?
파이썬 프로그래밍의 제어문은 프로그램의 흐름을 제어하는 문법으로, 크게 조건문과 반복문 두 가지 가 있습니다.
💡 조건문과 반복문은 각각 어떤 상황에서 사용되나요?
- 조건문: '만약 돈이 있으면 택시를 타고, 돈이 없으면 걸어간다'와 같이 특정 조건에 따라 다른 동작을 수행할 때 사용됩니다.
- 반복문: '나무를 10번 찍는다'처럼 많은 일들을 반복적으로 수행해야 할 때 사용됩니다.

이 콘텐츠는 파이썬 프로그래밍의 핵심인 제어문(조건문, 반복문)을 쉽고 명확하게 설명하여, 코드가 어떻게 동작하는지 그 흐름을 완벽하게 이해하도록 돕습니다. '돈이 있으면 택시를 타고, 없으면 걸어간다'와 같은 일상적인 예시부터 스크래치 코드, 그리고 디버깅을 통한 한 줄씩 코드 실행 과정까지 시각적으로 보여주며 초보자도 직관적으로 파이썬의 논리 구조를 파악할 수 있게 합니다. 특히, if, for, while 문법의 기본 구조와 함께 break, continue, range, 리스트 내포 등 실용적인 활용법까지 다루어 실제 코딩에 바로 적용 가능한 실질적인 문제 해결 능력을 길러줍니다.
1. 파이썬 제어문: 조건문과 반복문 소개
- 제어문의 종류: 파이썬 프로그래밍의 제어문은 크게 조건문과 반복문 두 가지로 나뉜다.
- 조건문: '만약 돈이 있으면 택시를 타고, 없으면 걸어간다'와 같이 특정 조건에 따라 다른 동작을 수행할 때 사용한다.
- 반복문: 많은 작업을 반복적으로 수행해야 할 때 사용한다.
2. 조건문 (If 문)
2.1. 조건문의 기본 개념 및 순서도
- 일상생활 예시: '돈이 있으면 택시를 타고, 돈이 없으면 걸어간다'와 같이 일상에서 많이 사용되는 '무엇이 있으면 무엇을 하고, 없으면 어떻게 한다'는 표현이 조건문의 기본 개념이다.
- 순서도 표현:
- 시작점에서 다이아몬드 형태로 '돈이 있는가?'를 묻는다.
- '참(True)'이면 '택시를 탄다'로, '거짓(False)'이면 '걸어간다'로 이어진다.
- 이러한 순서도는 프로그래밍 코드로 훨씬 간단하고 간결하게 표현할 수 있다.
2.2. 스크래치 코드를 통한 조건문 이해
- 스크래치 코드 활용: 초등학생 등 파이썬에 익숙하지 않은 사람들을 위해 스크래치 코드를 먼저 제시한다.
- 스크래치 예시:
- '머니(money)' 변수를 'True'로 설정한다.
- '만약 머니가 True이면 택시를 타고 가라'고 지시하고, '아니면 걸어가라'고 지시한다.
- '머니'가 True이므로 '택시를 타고 가라'는 선택이 실행된다.
2.3. 파이썬 If 문 실습 및 기본 구조
- 불 자료형 활용: 'money = True'와 같이 불(Boolean) 자료형을 변수에 할당한다.
- If 문 작성:
- if money: 구문은 'money' 변수가 True이면 다음 코드를 실행하라는 의미이다.
- print('택시를 타고')는 'money'가 True일 때 실행된다.
- else: 구문은 'money'가 False일 때 실행되며, print('걸어가라')가 실행된다.
- 조건문의 구조: if 뒤의 조건이 True이면 바로 밑의 코드가 실행되고, False이면 else 구문 밑의 코드가 실행되는 구조이다.
2.4. If 문에서의 들여쓰기 중요성
- 들여쓰기 규칙: if 문 아래의 코드는 반드시 들여쓰기를 해야 한다.
- 오류 발생: 들여쓰기가 잘못되면 'IndentationError'라는 문법 오류가 발생한다.
- 탭(Tab) 사용: 파이썬에서는 키보드의 '탭' 키를 눌러 들여쓰기를 맞춰야 문법에 맞게 코드를 실행할 수 있다.
- 필수 사항: 들여쓰기 오류를 피하고, 들여쓰기는 반드시 해야 한다.
2.5. If 문과 불 자료형 및 비교 연산자
- 조건식의 결과: if 뒤에 오는 조건식은 결국 불 자료형(True 또는 False)으로 평가된다.
- 값의 참/거짓:
- 값이 있는 것은 참(True)으로, 없는 것은 거짓(False)으로 인식된다.
- 예를 들어, if 1:과 같이 숫자가 들어가도 참으로 인식되어 다음 코드가 실행된다.
- 비교 연산자: if 문 뒤에 비교 연산자를 사용하여 조건을 만들 수 있다.
- 크다/작다: a > b, a < b (예: 4 > 1은 참)
- 같다: a == b (등호 두 개 사용)
- 다르다: a != b (느낌표와 등호 사용)
- 크거나 같다/작거나 같다: a >= b, a <= b (부등호 먼저, 등호 나중)
- 실습 예시:
- a = 4, b = 1일 때 if a > b:는 참이므로 '택시를 타고 가라'가 출력된다.
- if a < b:는 거짓이므로 '걸어가라'가 출력된다.
- if a <= b:는 참이므로 '택시를 타고 가라'가 출력된다.
- 결론: 비교 연산자는 결국 True 또는 False를 만들어 if 문 안에서 어떤 코드를 실행할지 결정한다.
2.6. 논리 연산자 (and, or, not)

- or (또는 |):
- money = 2000, card = True일 때 if money < 3000 or card:를 실행한다.
- money < 3000은 참(True)이고, card는 참(True)이다.
- or는 양쪽 조건 중 하나라도 참이면 전체가 참이 된다.
- 예시: False or True는 True로 평가되어 '택시를 타고 가라'가 출력된다.
- 양쪽 모두 거짓일 때만 전체가 거짓이 된다.
- | 기호도 or와 동일한 효과를 낸다.
- and (또는 &):
- and는 양쪽 조건 모두 참이어야 전체가 참이 된다.
- 둘 중 하나라도 거짓이면 전체가 거짓이 된다.
- 예시: True and False는 False로 평가되어 '걸어가라'가 출력된다.
- True and True일 때만 '택시를 타고 가라'가 출력된다.
- & 기호도 and와 동일한 효과를 낸다.
- not:
- not은 뒤에 오는 값의 반대를 의미한다.
- not True는 False가 되고, not False는 True가 된다.
- 예시: if not False:는 True로 평가되어 '택시를 타고 가라'가 출력된다.
2.7. in과 not in 연산자
- in:
- 리스트, 튜플, 문자열 등 여러 개의 자료형이 있는 경우, 특정 값이 그 안에 포함되어 있는지 확인할 때 사용한다.
- 예시: if 1 in [1, 2, 3]:은 1이 리스트 안에 있으므로 참(True)이 되어 '택시를 타고 가라'가 출력된다.
- not in:
- in의 반대 개념으로, 특정 값이 자료형 안에 포함되어 있지 않은지 확인할 때 사용한다.
- 예시: if 1 not in [1, 2, 3]:은 1이 리스트 안에 있으므로 거짓(False)이 되어 '걸어가라'가 출력된다.
- not in과 in은 별도의 기호가 없다.
2.8. pass 키워드
- pass의 역할: 조건문 내에서 아무 일도 하지 않게 설정하고 싶을 때 사용한다.
- 동작 방식: pass 구문은 말 그대로 해당 부분을 그냥 지나가게(통과하게) 한다.
- 예시: if True: pass는 조건이 참이지만 아무 동작 없이 다음 코드로 넘어간다.
2.9. elif를 이용한 다중 조건문
- 다중 조건의 필요성: 조건이 두 가지만 있는 것이 아니라 여러 개로 나뉠 때 사용한다.
- elif의 추가: if와 else 사이에 elif (else if의 줄임말)를 추가하여 여러 조건을 검사할 수 있다.
- 실행 흐름:
- if 조건이 거짓(False)이면 다음 elif 조건으로 넘어간다.
- elif 조건이 참(True)이면 해당 코드를 실행하고, 나머지 elif나 else는 실행하지 않고 조건문을 빠져나간다.
- 모든 if와 elif 조건이 거짓이면 마지막 else 구문이 실행된다.
- 예시:
- pocket = ['money', 'card']에서 if 'money' in pocket:은 참이므로 '택시를 타고 가라'가 실행된다.
- 만약 'money'가 없고 'card'만 있다면, elif 'card' in pocket:이 참이 되어 '택시를 타고 가라'가 실행된다.
- 모든 조건이 거짓일 경우, else 구문이 실행된다.
2.10. 조건부 표현식 (Conditional Expression)
- 간결한 표현: 여러 줄로 작성해야 하는 조건문을 한 줄로 간결하게 표현하는 방법이다.
- 기본 구조: [성공했을 때의 값] if [조건식] else [실패했을 때의 값]
- 예시:
- 기존 방식:
```python score = 70 if score >= 60: message = "success" else: message = "failure" print(message) # success ```
- 조건부 표현식:
```python score = 70 message = "success" if score >= 60 else "failure" print(message) # success ```
- 주의사항: else 뒤에 값을 반드시 써야 한다. 그렇지 않으면 오류가 발생한다.
- 다른 언어와의 비교: 다른 언어에서는 삼항 연산자(Ternary Operator)라고 부르며 물음표(?)를 사용하기도 하지만, 파이썬에서는 이와 같은 방식으로 표현한다.
3. 반복문 (Loop)
3.1. 반복문의 기본 개념 및 순서도
- 반복의 필요성: 프로그래밍에서는 나무를 10번 찍거나, 메일을 1000통 보내는 등 반복적으로 수행해야 하는 작업이 많다.
- 반복문의 역할: 이러한 반복적인 작업을 효율적으로 처리하기 위해 반복문을 사용한다.
- 순서도 표현:
- '찍은 횟수가 10번 이하인가?'라는 조건을 검사한다.
- 조건이 참(True)이면 '나무를 찍는다'를 수행하고, '찍은 횟수'를 1 증가시킨다.
- 이 과정을 반복하다가 '찍은 횟수'가 10번을 넘으면 조건이 거짓(False)이 되어 반복을 종료한다.
- 스크래치 코드 활용: 스크래치에서도 '찍은 횟수가 10번 이하일 때까지 반복하기' 블록을 통해 반복문을 구현할 수 있다.
3.2. while 문
3.2.1. while 문의 기본 구조 및 실습
- while 문의 종류: 파이썬의 반복문에는 while과 for 두 가지가 있다.
- 기본 구조: while [조건문]: 형태로 작성하며, 조건문은 불 자료형(True/False)으로 평가되어야 한다.
- 들여쓰기: while 문 아래의 수행할 코드는 반드시 들여쓰기를 해야 한다.
- 실습 예시:
```python tree_hit = 0 while tree_hit < 10: tree_hit = tree_hit + 1 print("나무를 %d번 찍었습니다." % tree_hit) if tree_hit == 10: print("나무 넘어갑니다.") ```
- 증감 연산자: 파이썬에서는 ++와 같은 증감 연산자를 지원하지 않으며, tree_hit = tree_hit + 1 또는 tree_hit += 1과 같이 명시적으로 작성해야 한다.
3.2.2. 디버깅을 통한 while 문 이해
- 디버깅 기능: 비주얼 스튜디오 코드의 디버깅 기능을 활용하여 코드가 한 줄씩 어떻게 실행되는지 확인할 수 있다.
- 브레이크 포인트: 코드 왼쪽에 빨간 점을 찍어 브레이크 포인트(Break Point)를 설정하면, 디버깅 시 해당 지점에서 실행이 멈춘다.
- '스텝 오버': '스텝 오버(Step Over)' 기능을 사용하여 한 줄씩 코드를 실행하며 변수 값의 변화와 코드 흐름을 추적할 수 있다.
- while 문의 동작:
- while 뒤의 조건이 True인 동안 while 문 안의 코드를 반복적으로 실행한다.
- 조건이 False가 되면 while 문을 빠져나간다.
- 예시에서 tree_hit이 10이 되면 if tree_hit == 10 조건이 참이 되어 '나무 넘어갑니다.'가 출력되고, tree_hit이 11이 되면 while tree_hit < 10 조건이 거짓이 되어 반복문이 종료된다.
3.2.3. break 키워드
- break의 역할: 반복문(예: while 문)을 강제로 빠져나올 때 사용한다.
- 실습 예시:
```python coffee = 10 money = 300 while money: # money가 0이 아닌 이상 True로 간주 coffee = coffee - 1 print("남은 커피의 양은 %d개입니다." % coffee) if not coffee: # coffee가 0이 되면 True print("커피가 다 떨어졌습니다.") break ```
- 동작 방식:
- while money:는 money가 0이 아닌 한 계속 True로 평가되어 무한 반복될 수 있다.
- 하지만 if not coffee: (커피가 0개가 되면) 조건이 참이 되면 break 문이 실행된다.
- break를 만나면 while 문의 조건이 여전히 True이더라도 즉시 반복문을 종료하고 빠져나간다.
3.2.4. continue 키워드
- continue의 역할: 반복문 안에서 continue를 만나면, 그 이후의 코드를 실행하지 않고 즉시 반복문의 맨 처음으로 돌아가 다음 반복을 시작한다.
- 실습 예시:
```python a = 0 while a < 10: a = a + 1 if a % 2 == 0: # a가 짝수이면 continue print(a) # 홀수만 출력 ```
- 동작 방식:
- a가 짝수일 때 (a % 2 == 0이 True일 때) continue가 실행된다.
- continue를 만나면 print(a) 구문은 실행되지 않고, while 문의 맨 처음으로 돌아가 다음 a 값을 가지고 반복을 계속한다.
- 결과적으로 홀수만 출력된다.
3.2.5. 무한 루프 (Infinite Loop)
- 무한 루프의 발생: while True:와 같이 while 문의 조건이 항상 참(True)인 경우 무한 루프가 발생한다.
- 종료 방법: 무한 루프는 Ctrl + C 키를 눌러 강제로 종료할 수 있다.
3.3. for 문
3.3.1. for 문의 기본 구조
- 기본 구조: for [변수] in [리스트/튜플/문자열]: 형태로 작성한다.
- 반복 대상: in 뒤에는 리스트, 튜플, 문자열 등 여러 요소를 담고 있는 자료형(주머니)이 온다.
- 변수의 역할: in 앞에 있는 변수(예: i)는 반복 대상에서 요소를 하나씩 꺼내 담는 그릇 역할을 한다.
- 동작 방식: for 문은 반복 대상의 요소를 순서대로 하나씩 꺼내 변수에 담고, 그 변수를 활용하여 for 문 안의 코드를 실행한다. 모든 요소를 다 사용하면 반복을 종료한다.
- 실습 예시:
```python test_list = ['one', 'two', 'three'] for i in test_list: print(i) ```
- i에 'one', 'two', 'three'가 순서대로 담겨 출력된다.
3.3.2. for 문의 다양한 활용
- 리스트 안에 튜플이 있는 경우: 리스트 안에 튜플이 들어있어도 for 문은 하나씩 요소를 빼온다.
- 튜플 언패킹: 튜플 요소를 꺼낼 때 (first, last)와 같이 여러 변수에 담아 각각 활용할 수 있다.
- 예시: a = [(1, 2), (3, 4), (5, 6)]
- for (first, last) in a:를 사용하면 first에는 튜플의 첫 번째 요소, last에는 두 번째 요소가 담긴다.
- print(first)와 print(last)를 통해 각각의 값을 출력할 수 있다.
3.3.3. for 문과 조건문의 결합
- 종합 예시: for 문과 if 문을 함께 사용하여 학생들의 점수를 처리하는 예시를 살펴본다.
```python marks = [90, 25, 67, 45, 80] number = 0 for mark in marks: number = number + 1 if mark >= 60: print("%d번 학생은 합격입니다." % number) else: print("%d번 학생은 불합격입니다." % number) ```
- 동작 방식:
- marks 리스트에서 점수(mark)를 하나씩 꺼내 mark 변수에 담는다.
- number 변수는 학생 번호를 나타내며, 반복할 때마다 1씩 증가한다.
- if mark >= 60: 조건에 따라 합격/불합격 메시지를 출력한다.
- 파이썬 for 문의 특징:
- 다른 언어의 for 문과 달리, 파이썬의 for 문은 리스트와 같은 자료형이 있으면 자동으로 순서대로 요소를 하나씩 빼온다.
- 별도의 인덱스 증가(예: i++)가 필요 없다.
- 이는 다른 언어의 '향상된 for 문' 또는 'for-each'와 유사하다.
3.3.4. for 문과 continue
- for 문에서의 continue: while 문에서와 동일하게, continue를 만나면 현재 반복을 중단하고 다음 반복으로 넘어간다.
- 간결한 표현: if 문이 한 줄일 경우, if 조건: 실행문 형태로 한 줄에 작성할 수 있다.
- 실습 예시:
```python marks = [90, 25, 67, 45, 80] number = 0 for mark in marks: number = number + 1 if mark < 60: continue # 60점 미만이면 다음 반복으로 넘어감 print("%d번 학생 축하합니다. 합격입니다." % number) ```
- 동작 방식:
- mark가 60점 미만일 경우 (mark < 60이 True) continue가 실행된다.
- continue가 실행되면 print 구문은 건너뛰고 다음 학생의 점수로 넘어간다.
- 결과적으로 60점 이상인 학생의 합격 메시지만 출력된다.
3.3.5. range() 함수
- range()의 역할: 특정 범위의 숫자를 자동으로 생성하여 리스트처럼 사용할 수 있게 해주는 내장 함수이다.
- 사용법: range(시작 숫자, 끝 숫자) 형태로 사용한다.
- 시작 숫자는 포함(이상)되고, 끝 숫자는 포함되지 않는다(미만).
- 예시: range(1, 11)은 1부터 10까지의 숫자를 생성한다.
- for 문과의 활용: for i in range(1, 11):과 같이 사용하여 특정 횟수만큼 반복하거나, 순차적인 숫자를 다룰 때 유용하다.
- 합계 계산 예시:
```python sum = 0 for i in range(1, 11): # 1부터 10까지 반복 sum = sum + i print(sum) # 55 (1부터 10까지의 합) ```
- 디버깅을 통한 이해: range() 함수가 생성한 숫자가 i에 하나씩 담겨 sum에 더해지는 과정을 디버깅으로 확인할 수 있다.
- 활용성: 리스트를 일일이 작성하기 어려울 때 range() 함수를 주로 사용한다.
3.3.6. 이중 for 문 (Nested For Loop)
- 이중 반복의 필요성: 반복문 안에 또 다른 반복문이 중첩되어 사용될 때 이중 반복문이라고 한다.
- 구구단 예시: 구구단을 출력할 때 이중 for 문을 활용할 수 있다.
```python for i in range(2, 10): # 2단부터 9단까지 (바깥쪽 for문) for j in range(1, 10): # 각 단의 1부터 9까지 (안쪽 for문) print(i * j, end=" ") # 결과 출력 후 공백으로 구분 print('') # 한 단이 끝나면 줄바꿈 ```
- 변수의 의미: i와 j는 임시 변수로, range()에서 하나씩 꺼낸 값을 담는 그릇 역할을 한다. 변수 이름은 자유롭게 지정할 수 있다.
- end 옵션: print() 함수에 end=" " 옵션을 사용하면, 출력 후 기본 줄바꿈 대신 지정된 문자열(여기서는 공백)을 붙여 다음 출력이 같은 줄에 이어지게 한다.
- 이중 for 문의 실행 흐름:
- 바깥쪽 for 문: i에 첫 번째 값(예: 2)이 담긴다.
- 안쪽 for 문: i가 고정된 상태에서 j가 range(1, 10)의 모든 값(1부터 9까지)을 순서대로 반복한다.
- 안쪽 for 문이 완전히 끝나야 (모든 j 값이 처리되어야) 바깥쪽 for 문으로 돌아와 i의 다음 값(예: 3)을 가져온다.
- 이 과정이 반복되어 2단부터 9단까지의 구구단이 출력된다.
3.4. 리스트 내포 (List Comprehension)

- 리스트 내포의 목적: 리스트를 편리하고 간결하게 생성하기 위해 사용한다.
- 기본 구조: [표현식 for 변수 in 반복 가능한 객체]
- 표현식: 리스트에 담고자 하는 결과 값 (예: num * 3)
- 변수: 반복 가능한 객체에서 하나씩 꺼내 담는 변수 (예: num)
- 반복 가능한 객체: 리스트, 튜플, range() 등 (예: a)
- 조건문 추가: [표현식 for 변수 in 반복 가능한 객체 if 조건문]
- if 뒤에 조건을 추가하여 특정 조건에 맞는 요소만 리스트에 포함시킬 수 있다.
- 예시: [num * 3 for num in a if num % 2 == 0]는 a 리스트의 짝수에만 3을 곱하여 리스트에 담는다.
- 이중 for 문과 조건문 결합: [표현식 for 변수1 in 객체1 for 변수2 in 객체2 if 조건문] 형태로 이중 for 문과 조건문을 함께 사용할 수 있다.
- 결국 리스트에 추가하고자 하는 표현식을 가장 앞에 쓰고, 그 뒤에 for 문과 if 문을 순서대로 작성하는 방식이다.
4. 제어문 요약 및 마무리
- 조건문:
- if 문: 특정 조건(불 자료형)에 따라 코드를 실행한다.
- else: if 조건이 거짓일 때 실행된다.
- 들여쓰기: 반드시 맞춰야 한다.
- 조건식: 비교 연산자, and, or, not, in, not in 등을 사용할 수 있다.
- 다중 조건: elif를 사용하여 여러 조건을 추가할 수 있다.
- 조건부 표현식: 한 줄로 간결하게 조건문을 표현하는 방식이다.
- 반복문:
- while 문: 조건이 참인 동안 코드를 반복 실행한다.
- break: 반복문을 강제로 탈출한다.
- continue: 현재 반복을 중단하고 다음 반복으로 넘어간다.
- 무한 루프: 조건이 항상 참일 때 발생하며, Ctrl + C로 종료한다.
- for 문: 리스트, 튜플, 문자열 등의 요소를 하나씩 꺼내 반복 수행한다.
- range() 함수: 특정 범위의 숫자를 생성하여 for 문과 함께 사용한다.
- 이중 반복문: 반복문 안에 또 다른 반복문이 중첩된 형태로, 구구단 출력 등에 활용된다.
- 리스트 내포: 리스트를 간결하게 생성하는 방법이다.
'인터넷' 카테고리의 다른 글
| 외국인들만 꿀빨고 있는 진짜 챗GPT,Semrush 수익화 방법 (0) | 2025.08.30 |
|---|---|
| 네이버 블로그 포스팅 시간 '반'으로 줄이는 방법: 블로거 90%가 몰랐던 꿀팁 (2) | 2025.08.30 |
| 초보자 AI 에이전트 만들기. n8n 무료 가입부터 사용법. 자동화 기초. (0) | 2025.08.30 |
| ChatGPT도 안되는 PPT? 스카이워크(Skywork AI), 올인원 에이전트 사용법 공개 (2) | 2025.08.30 |
| 일레븐랩스(ElevenLabs)를 활용하여 사업에 적용할 수 있는 방법은 무엇인가요? (3) | 2025.08.29 |