| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- lambda
- container
- 자바
- 실전 자바 고급 1편
- 시작하세요 도커 & 쿠버네티스
- Thread
- 일프로
- 자바 입출력 스트림
- SQL
- 람다
- RDB
- 도커
- java
- 쓰레드
- replicaset
- Docker
- Kubernetes
- 도커 엔진
- 김영한
- 알고리즘
- 인프런
- 컨테이너
- 자료구조
- 쿠버네티스
- mysql
- 스레드
- db
- 데이터베이스
- 동시성
- 함수형 인터페이스
- Today
- Total
쌩로그
[Python] 인프런 - 프로그래밍 시작하기 - 파이썬 입문 - Se05. 파이썬 흐름 제어 본문
목록
- 개요
- 본론
2-1. 제어문 (if문)
2-2. 반복문 - for문
2-3. 반복문 - while문 - 요약
1. 개요
해당 포스팅은 인프런 - 프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)을 학습하고 정리한 포스팅이다.
이번 챕터에서는 파이썬 흐름 제어에 대해 정리한다.
프로그램의 실행 흐름을 제어하는 두 가지 핵심 도구인 조건문(if)과 반복문(for, while)을 다루며, 관계/논리 연산자부터 break/continue, for-else/while-else 구문까지 파이썬 흐름 제어의 전반적인 개념을 학습한다.
2. 본론
2-1. 제어문 (if문)
조건문은 특정 조건이 참(True)이냐 거짓(False)이냐에 따라 실행할 코드 블록을 분기하는 구문이다.
if문 기본 구조
# 기본 형식
if <조건식>:
<참일 때 실행>
else:
<거짓일 때 실행>
파이썬에서 True로 평가되는 값과 False로 평가되는 값은 다음과 같다.
| 구분 | 예시 |
|---|---|
True (참) |
0이 아닌 수, 비어있지 않은 문자열 "abc", 비어있지 않은 리스트 [1,2,3] 등 |
False (거짓) |
0, 빈 문자열 "", 빈 리스트 [], 빈 튜플 (), 빈 딕셔너리 {} |
city = ""
if city:
print("You are in:", city)
else:
print("plz enter your city") # city가 빈 문자열이므로 False → 이 줄 출력
city2 = "Seoul"
if city2:
print("You are in:", city2) # city2가 비어있지 않으므로 True → 이 줄 출력
else:
print("plz enter your city")
관계 연산자
두 값을 비교하여 True 또는 False를 반환하는 연산자다.
| 연산자 | 의미 | 예시 (x=15, y=10) | 결과 |
|---|---|---|---|
== |
같다 | x == y |
False |
!= |
다르다 | x != y |
True |
> |
크다 | x > y |
True |
>= |
크거나 같다 | x >= y |
True |
< |
작다 | x < y |
False |
<= |
작거나 같다 | x <= y |
False |
x = 15
y = 10
print(x == y) # False
print(x != y) # True
print(x > y) # True
print(x >= y) # True
print(x < y) # False
print(x <= y) # False
논리 연산자
여러 조건을 조합할 때 사용하는 연산자다.
| 연산자 | 의미 | 설명 |
|---|---|---|
and |
그리고 | 두 조건 모두 참이어야 True |
or |
또는 | 두 조건 중 하나만 참이어도 True |
not |
부정 | 참/거짓을 반전 |
a = 75
b = 40
c = 10
print('and:', a > b and b > c) # True and True → True
print('or:', a > b or b > c) # True or True → True
print('not:', not a > b) # not True → False
print(not True) # False
print(not False) # True
연산자 우선순위
산술 연산자 → 관계 연산자 → 논리 연산자 순으로 우선순위가 높다.
# 산술 > 관계 > 논리 순서로 계산
print('e1 : ', 3 + 12 > 7 + 3) # 15 > 10 → True
print('e2 : ', 5 + 10 * 3 > 7 + 3 * 20) # 35 > 67 → False
print('e3 : ', 5 + 10 > 3 and 7 + 3 == 10) # True and True → True
다중 조건문 (elif)
조건이 여러 개인 경우 elif를 사용해 분기를 추가할 수 있다.
num = 90
if num >= 90:
print('Grade : A')
elif num >= 80:
print('Grade : B')
elif num >= 70:
print('Grade : C')
else:
print('과락')
# 출력: Grade : A
중첩 조건문
if문 안에 또 다른 if문을 넣어 세부 조건을 처리할 수 있다.
grade = 'A'
total = 95
if grade == 'A':
if total >= 90:
print('장학금 100%') # 출력
elif total >= 80:
print('장학금 80%')
else:
print('장학금 50%')
else:
print('장학금 없음')
in / not in 연산자
특정 값이 컬렉션(리스트, 집합, 딕셔너리, 튜플 등)에 포함되어 있는지 확인한다.
q = [10, 20, 30]
w = {70, 80, 90, 100}
e = {"name": "Lee", "city": "Seoul", "grade": "A"}
r = (10, 12, 14)
print(15 in q) # False - q에 15가 없음
print(90 in w) # True - w에 90이 있음
print(12 not in r) # False - r에 12가 있음
print("name" in e) # True - 딕셔너리의 키 검색
print("Seoul" in e.values()) # True - 딕셔너리의 값 검색
딕셔너리에
in을 사용하면 기본적으로 키(key)를 검색한다. 값(value)을 검색하려면.values()를 명시해야 한다.
2-2. 반복문 - for문
for문은 컬렉션(iterable)의 원소를 순서대로 꺼내어 반복 처리하는 구문이다.
for문 기본 구조와 range()
# 기본 형식
for <변수> in <iterable>:
<반복할 코드>
range() 함수는 정수 시퀀스를 생성하며 for문과 자주 함께 사용된다.
| 형식 | 설명 | 예시 |
|---|---|---|
range(n) |
0부터 n-1까지 | range(10) → 0~9 |
range(start, stop) |
start부터 stop-1까지 | range(1, 11) → 1~10 |
range(start, stop, step) |
step 간격으로 | range(0, 11, 2) → 0,2,4,6,8,10 |
for v1 in range(10): # 0 ~ 9
print('v1 is :', v1)
for v2 in range(1, 11): # 1 ~ 10
print('v2 is :', v2)
for v3 in range(0, 11, 2): # 0, 2, 4, 6, 8, 10 (짝수)
print('v3 is :', v3)
# range와 sum()을 활용한 합산
print('1 ~ 1000 Sum : ', sum(range(1, 1001))) # 500500
print('1 ~ 1000 4의 배수의 합 : ', sum(range(4, 1001, 4)))
Iterable 자료형 순회
for문은 문자열, 리스트, 튜플, 집합, 딕셔너리 등 모든 iterable 자료형을 순회할 수 있다.
# 리스트 순회
names = ['Kim', 'Park', 'Cho', 'Lee', 'Choi', 'Yoo']
for n in names:
print('You are : ', n)
# 문자열 순회 (한 글자씩)
word = "Beautiful"
for s in word:
print('word : ', s)
# 딕셔너리 순회
my_info = {"name": 'Lee', "Age": 33, "City": "Seoul"}
for key in my_info: # 키(key)를 순회
print('key : ', my_info[key])
for v in my_info.values(): # 값(value)을 순회
print('value : ', v)
break / continue
반복 흐름을 중간에 제어하는 키워드다.
| 키워드 | 동작 |
|---|---|
break |
반복문을 즉시 종료하고 빠져나감 |
continue |
현재 반복 회차를 건너뛰고 다음 회차로 넘어감 |
# break: 특정 값을 찾으면 반복 중단
numbers = [14, 3, 4, 7, 10, 24, 17, 2, 33, 15, 34, 36, 38]
for num in numbers:
if num == 34:
print('Found : 34!')
break # 34를 찾으면 반복 종료
else:
print('Not found : ', num)
# continue: bool 타입이면 건너뜀
lt = ["1", 2, 5, True, 4.3, complex(4)]
for v in lt:
if type(v) is bool:
continue # bool이면 이 회차 건너뜀
print("current type:", v, type(v))
print("multiply by 2", v * 3)
for-else 구문
for문이 break 없이 정상적으로 끝까지 실행되면 else 블록이 실행된다. break로 중단되면 else는 실행되지 않는다.
numbers = [14, 3, 4, 7, 10, 24, 17, 2, 33, 15, 34, 36, 38]
for num in numbers:
if num == 3:
print("Found : 3")
break # break가 실행되면 else는 건너뜀
else:
print("Not found : 3") # break 없이 끝까지 돌면 실행
중첩 for문
for문 안에 또 다른 for문을 넣어 다차원 반복 처리를 할 수 있다.
# 구구단 출력 (중첩 for문 활용)
for i in range(2, 10):
for j in range(1, 10):
print('{:4d}'.format(i * j), end='') # 4자리 고정폭, 줄바꿈 없이 출력
print() # 단(段) 바꿈
reversed()
iterable의 원소 순서를 반전시킨다. 반전된 iterator를 반환하므로 list(), tuple(), set() 등으로 변환해 사용한다.
name2 = 'Aceman'
print('Reversed', reversed(name2)) # reversed object (iterator)
print('List', list(reversed(name2))) # ['n', 'a', 'm', 'e', 'c', 'A']
print('Tuple', tuple(reversed(name2))) # ('n', 'a', 'm', 'e', 'c', 'A')
print('Set', set(reversed(name2))) # {'A', 'a', 'c', 'e', 'm', 'n'} (순서 없음)
2-3. 반복문 - while문
while문은 조건식이 참(True)인 동안 코드 블록을 반복 실행하는 구문이다.
while문 기본 구조
# 기본 형식
while <조건식>:
<반복할 코드>
# 예제1: 카운트다운
n = 5
while n > 0:
print(n) # 5, 4, 3, 2, 1 출력
n = n - 1 # 반드시 조건이 False가 되도록 갱신해야 무한루프를 방지
# 예제2: 리스트가 비어있지 않은 동안 반복
a = ['foo', 'bar', 'baz']
while a:
print(a.pop()) # 'baz', 'bar', 'foo' 순으로 출력 (pop은 마지막 원소 제거 후 반환)
break / continue
for문과 동일하게 break와 continue를 사용할 수 있다.
# break: 조건에 걸리면 반복 종료
n = 5
while n > 0:
n -= 1
if n == 2:
break # n이 2가 되면 즉시 종료
print(n) # 4, 3 출력 후 종료
print('Loop Ended.')
# continue: 조건에 걸리면 현재 회차 건너뜀
m = 5
while m > 0:
m -= 1
if m == 2:
continue # m이 2일 때 print를 건너뜀
print(m) # 4, 3, 1, 0 출력 (2는 출력 안 됨)
print('Loop Ended.')
while-else 구문
for-else와 동일한 원리로, break 없이 while 조건이 False가 되어 정상 종료되면 else 블록이 실행된다.
# break로 종료 → else 실행 안 됨
n = 10
while n > 0:
n -= 1
print(n)
if n == 5:
break # n이 5가 되면 종료 → else 건너뜀
else:
print('else out.') # 실행되지 않음
# break 없이 종료 → else 실행됨
a = ['foo', 'bar', 'baz', 'qux']
s = 'kim'
i = 0
while i < len(a):
if a[i] == s:
break # 찾으면 break
i += 1
else:
print(s, 'not found in list.') # 'kim' not found in list. 출력
무한 루프 (while True)
while True:는 조건이 항상 참이므로 무한히 반복된다. 반드시 내부에 break 조건을 두어야 한다.
# 리스트가 빌 때까지 반복 (while True + break 패턴)
a = ['foo', 'bar', 'baz']
while True:
if not a: # 리스트가 비어있으면 (False이면)
break # 반복 종료
print(a.pop()) # 'baz', 'bar', 'foo' 순으로 출력
while True는 서버 루프, 사용자 입력 대기, 폴링(polling) 등에서 자주 쓰이는 패턴이다. 반드시 탈출 조건(break)을 명시해야 한다.
3. 요약
| 구문 | 핵심 키워드 | 설명 |
|---|---|---|
| 조건문 | if, elif, else |
조건의 참/거짓에 따라 코드 블록 분기 |
| 관계 연산자 | ==, !=, >, >=, <, <= |
두 값을 비교해 True/False 반환 |
| 논리 연산자 | and, or, not |
조건을 조합, 산술 > 관계 > 논리 우선순위 |
| 멤버십 연산자 | in, not in |
컬렉션에 값 포함 여부 확인 |
| for문 | for ... in ... |
iterable을 순서대로 순회 |
| while문 | while <조건> |
조건이 True인 동안 반복 |
| 반복 제어 | break |
반복문 즉시 종료 |
| 반복 제어 | continue |
현재 회차 건너뛰고 다음 회차 진행 |
| else 절 | for-else, while-else |
break 없이 정상 종료 시 else 블록 실행 |
| 무한 루프 | while True |
항상 참 → break로 탈출 조건 필수 |
range(start, stop, step): for문과 함께 정수 시퀀스를 생성하는 핵심 함수- 딕셔너리에
in사용 시 기본으로 키를 검색, 값 검색은.values()필요 reversed(): iterable을 역순으로 순회하는 iterator 반환- 중첩 for문 : 이중 루프로 2차원 반복 처리 (구구단 등)
'Language > Python' 카테고리의 다른 글
| [Python] 인프런 - 프로그래밍 시작하기 - 파이썬 입문 - Se06. 파이썬 함수 및 입력 (0) | 2026.05.22 |
|---|---|
| [Python] 인프런 - 프로그래밍 시작하기 - 파이썬 입문 - Se04. 파이썬 자료형 (0) | 2026.05.14 |
| [Python] 인프런 - 프로그래밍 시작하기 - 파이썬 입문 - Se03. 파이썬 기초 (0) | 2026.05.14 |