2026. 5. 14. 06:39ㆍAI/Python
Python에서 제어문 (조건문, 반복문)의 기본 개념에 대해 정리해보자.
조건문
프로그램의 실행 흐름을 제어하기 위한 문법으로 기본적으로 if, elif, else를 이용하여 분기처리한다.
Python 3.10부터는 match ~ case 문법을 활용한 구조적 패턴 매칭을 통해
딕셔너리 데이터 구조를 기준으로 분기 처리도 가능하다.
if 문
특정 조건이 True 일 때 코드 블록이 실행되며, 그렇지 않으면 건너뛴다.
else 문
조건문에서 특정 조건이 충족되지 않을 때 (False) 실행할 코드 블록을 정의할 때 사용된다.
elif 문
if-else 구조에서 추가적인 조건을 검사할 때 사용된다.
주어진 여러 조건 중에서 하나만 참일 때 사용.
- elif는 if 없이 단독으로 사용될 수 없다.
- elif는 여러번 사용될 수 있다.
- else는 선택적이며, 사용할 경우 if-elif 뒤에 나타나야 한다.
if 여러 개 쓰기 vs if-elif-else 구문 쓰기
if-elif-else는 조건을 위에서부터 검사하다가 처음 True가 나오면 그 이후부터는 무시 (하나만 선택하는 것)
if 여러 개는 각각 독립적으로 실행되므로, 여러번 if문이 실행될 수 있음 (다 물어보는 것임)
조건부 표현식
조건의 참과 거짓에 따라 값을 선택하는 한줄 짜리 조건문으로써, 간단한 분기 로직을 짤 때 유용하다.
조건이 복잡하거나 여러 줄 처리가 필요한 경우, 일반 if문을 쓰는 것이 효과적이다.
# if-else
if num % 2 == 0:
print("짝수")
else:
print("홀수")
# 조건부 표현식
print("짝수") if num % 2 == 0 else print("홀수")
구조적 패턴 매칭
if-elif-else 문을 좀 더 간결하고 읽기 쉽게 만든 새로운 분기문이다.
어떤 일치하는 값을 판단하는데 편한 구문이다. (if문은 범위를 설정할 때 편하다)
match 값:
case 패턴1:
실행할 코드1
case 패턴2:
실행할 코드2
case _:
기본 실행 코드 (default)
month = int(input("월을 입력하세요 (1~12): "))
match month:
case 1 | 3 | 5 | 7 | 8 | 10 | 12:
print(f"{month}월은 31일까지 있습니다.")
case 4 | 6 | 9 | 11:
print(f"{month}월은 30일까지 있습니다.")
case 2:
print("2월은 28일 또는 윤년이면 29일까지 있습니다.")
case _:
print("잘못된 월입니다. 1~12 사이의 숫자를 입력해주세요.")
리스트, 튜플 매칭
- 튜플 매칭 시 case 부분에서 변수 언패킹으로 비교가 가능하다
- but 리스트와 튜플은 서로 다른 타입이지만, 구조적 패턴 매칭에서 시퀀스 패턴으로 인해 비슷하게 매칭 될 수 있다.
- 타입을 명확히 구분하려면, list() / tuple() 패턴을 사용해야 한다.
user = ("김사과", 20)
match user:
case (name, age) if age > 19:
print(f"{name}님은 성인입니다.")
case (name, age) if age > 15:
print(f"{name}님은 청소년입니다.")
case (name, age) if age > 6:
print(f"{name}님은 어린이입니다.")
case _:
print(f'{name}님은 유아입니다.')
scores = [95, 88, 76]
scores = (95, 88, 76)
scores = {"국어":95, "영어":88, "수학":76}
match scores:
case [korean, english, math]:
print(f"1. 국어: {korean}, 영어: {english}, 수학: {math}")
case (korean, _, math):
print(f"2. 국어: {korean}, 수학: {math}")
case {"국어": korean, "영어": english, "수학": math}:
print(f"3. 국어: {korean}, 영어: {english}, 수학: {math}")
scores = {"국어":95, "영어":88, "수학":76}
scores = [95, 88, 76]
scores = (95, 88, 76)
match scores:
# 타입 먼저 구분
case list():
match scores:
case [korean, english, math]:
print(f"리스트 → 국어: {korean}, 영어: {english}, 수학: {math}")
case tuple():
match scores:
case (korean, _, math):
print(f"튜플 → 국어: {korean}, 수학: {math}")
case dict():
match scores:
case {"국어": korean, "영어": english, "수학": math}:
print(f"딕셔너리 → 국어: {korean}, 영어: {english}, 수학: {math}")
반복문
특정 코드를 여러번 실행하기 위해 사용하는 제어문으로, 대표적으로 for문과 while문이 있다.
for문은 리스트, 문자열과 같은 iterable 객체의 요소를 순차적으로 반복할 때 사용되며
while문은 조건이 True인 동안 계속 실행된다.
또, break과 continue를 통해 반복 흐름을 제어할 수 있고 들여쓰기를 통해 반복 범위를 구분하는 것이 특징이다.
while 문
특정 조건이 참인 동안 반복적으로 코드 블록 실행하는 제어구조로써 조건이 거짓이 되면 반복을 멈춘다.
조건은 평가 결과가 참, 거짓이 될 수 있는 표현식이고, 조건이 참일때 코드 블록이 실행되고
실행되고 나서 다시 조건을 검사한다.
조건이 여전히 참이라면 코드 블록을 다시 실행하고 이 과정을 조건이 거짓이 될 때까지 반복한다.
for 문
시퀀스 (리스트, 튜플, 문자열 등)의 각 항목에 대해 반복 작업을 수행하는 반복문으로써
주로 지정된 범위 내에서 반복하거나, 반복할 요소들이 미리 정해져 있을 때 유용하다.
a = [10, 20, 30, 40]
for element in a:
print(element) # 10 20 30 40
range 함수
Python에서 순차적인 정수의 시퀀스를 생성하는데 사용되는 함수이다.
주로 for문과 함께 사용되며 일정한 범위 내에서 반복 작업을 수행할 때 유용하게 활용됩니다.
range() 함수의 결과로 생성되는 순차적인 정수 시퀀스는 실제로 메모리에 저장되지 않고
필요할 때 마다 생성되므로, 큰 범위의 반복문에도 효율적으로 사용될 수 있다.
enumerate() 함수
Python에서 반복문을 사용할 때 인덱스와 값을 함께 가져오기 위해 사용되는 내장 함수이다.
주로 for 문과 함께 사용되며, 반복문 내에서 순서를 추적하면서 값과 해당 값의 인덱스를 함께 사용한다.
(인덱스, 값)의 튜플을 반환하는 이터레이터를 생성한다.
enumerate(iterable Object, [start = 0])
* iterable 객체란 리스트, 튜플, 딕셔너리, 문자열과 같은 반복 가능한 컬렉션 자료형으로, 이터레이터를 생성할 수 있다.
for index, element enumerate('hello'):
print(index, element)
이터레이터
이터러블 객체는 iter() 함수를 사용해서 이터레이터로 바꿀 수 있으며, next() 사용하여 값을 하나씩 꺼낸다.
이 점을 볼 때 for문은 내부적으로 이터러블 객체를 집어넣으면, 내부적으로 iterator로 바꿔서 next를 실행해주는 구조이다.
numbers = [10, 20, 30]
iterator = iter(numbers)
print(next(iterator)) # 10
print(next(iterator)) # 20
print(next(iterator)) # 30
print(next(iterator)) # StopIteration Exception
zip 함수
Python에서 여러 개의 반복 가능한(이터러블) 객체를 병렬적으로 묶어주는 내장 함수이다.
각 객체로부터 순서대로 하나의 요소씩 가져와 튜플로 묶어주는 이터레이터를 반환한다.
주로 여러 개의 리스트나 튜플을 병렬적으로 처리하고자 할 때 사용된다.
continue
Python의 반복문(for나 while) 안에서 사용되며, 현재 반복을 즉시 건너뛰고 다음 반복으로 넘어가도록 하는 제어문입니다.
즉, continue 아래에 있는 코드는 실행하지 않고 반복문의 처음으로 돌아가 다음 조건을 검사하거나 다음 요소를 처리합니다.
예를 들어, 리스트를 순회하면서 특정 값만 건너뛰고 싶을 때 if문과 함께 사용하면 효율적입니다.
이를 통해 불필요한 코드 실행을 피하고, 조건에 따라 반복 흐름을 세밀하게 제어할 수 있습니다.
break
파이썬의 반복문(for나 while) 안에서 사용되어, 반복을 즉시 종료시키는 제어문입니다.
즉, break가 실행되면 반복문의 조건과 상관없이 해당 반복문을 완전히 빠져나옵니다.
주로 특정 조건을 만족하면 더 이상 반복을 진행할 필요가 없을 때 사용하며,
예를 들어 사용자 입력에서 "종료"라는 단어를 입력받으면 프로그램을 멈추는 로직 등에 자주 활용됩니다.
이를 통해 불필요한 반복을 줄이고, 효율적인 프로그램 흐름 제어가 가능합니다.
컴프리핸션
컴프리헨션(Comprehension)은 파이썬에서 리스트, 세트, 딕셔너리 등의 컬렉션을 간단하게 생성하거나 변형하는 방법 중 하나입니다.
컴프리헨션은 반복문과 조건문을 사용하여 간결하게 컬렉션을 생성하는 기법으로,
코드를 더 간단하고 가독성 좋게 작성할 수 있도록 도와줍니다.
li = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
result = [n for n in li]
print(result)
result = [n*2 for n in li]
print(result)
li = [1, 2, 3, 4, 5, 2, 3, 4]
unique_numbers = {x for x in li}
print(unique_numbers)
names = ['apple', 'banana', 'orange']
name_lengths = {name:len(name) for name in names}
print(name_lengths)'AI > Python' 카테고리의 다른 글
| Python의 기본 - 프로그래밍 방법론 (8) (0) | 2026.05.15 |
|---|---|
| Python의 기본 - 사용자 정의 함수 (7) (0) | 2026.05.14 |
| Python의 기본 - 튜플, 세트, 딕셔너리 (5) (0) | 2026.04.29 |
| Python의 기본 - 콜렉션 타입 중 리스트 (4) (0) | 2026.04.27 |
| Python의 기본 - 인풋 함수와 연산자 (3) (0) | 2026.04.22 |