제어문 (Control Statements)
- 제어문은 조건에 따라 코드의 실행 흐름을 제어하거나 반복적인 작업을 수행하는 데 사용됩니다.
- Python의 주요 제어문과 그 기능, 활용 사례, 그리고 주의점을 아래에 가독성 있게 정리했습니다.
If |
조건에 따라 코드 실행 |
점수 계산, 입력 검증 |
조건 순서와 들여쓰기 유의 |
Nested If |
조건문 안에 또 다른 조건 처리 |
복잡한 조건 처리, 다단계 검증 |
들여쓰기 오류 주의 |
While |
조건이 참일 동안 반복 실행 |
사용자 입력 반복, 특정 작업 반복 |
무한 루프 방지, 조건 업데이트 필요 |
For |
컬렉션 요소나 범위를 순회 |
리스트 순회, 인덱스 기반 작업 |
범위(range)의 종료값 포함 여부 확인 |
Break |
반복문 즉시 종료 |
무한 루프 종료, 특정 조건 만족 시 중단 |
조건 충족 시 제대로 종료되는지 확인 |
Continue |
현재 반복 건너뛰고 다음 반복으로 진행 |
특정 조건 필터링 |
조건이 반복적으로 건너뛰는지 주의 |
Range |
숫자 시퀀스 생성 및 반복에서 사용 |
특정 범위의 숫자 반복 |
종료값 포함되지 않음 확인 |
Nested Loop |
반복문 안에 또 다른 반복문 실행 |
다차원 데이터 처리, 모든 조합 생성 |
중첩 루프의 복잡성과 성능 저하 관리 필요 |
1. 조건문 (If Statements)
기능
- 특정 조건이 참일 경우 코드를 실행.
- 조건에 따라 여러 경우를 처리할 수 있음.
활용 사례
- 점수에 따른 학점 계산.
- 사용자 입력 검증 및 처리.
- 상황에 따라 실행 흐름을 다르게 처리.
예제
score = 85
if score >= 90:
print("A 학점")
elif score >= 80:
print("B 학점")
elif score >= 70:
print("C 학점")
else:
print("F 학점")
중첩 구조 (Nested If)
- 조건문 내부에 또 다른 조건문을 포함해 복잡한 조건 처리 가능.
age = int(input("나이를 입력하세요: "))
is_student = input("학생입니까? (yes/no): ")
if age >= 18:
if is_student.lower() == "yes":
print("성인이며, 학생입니다.")
else:
print("성인이며, 학생이 아닙니다.")
else:
if is_student.lower() == "yes":
print("미성년자이며, 학생입니다.")
else:
print("미성년자이며, 학생이 아닙니다.")
주의점
- 조건 순서: 조건문은 위에서부터 차례로 평가되므로, 가장 포괄적인 조건은 뒤에 배치.
- 들여쓰기: Python에서는 들여쓰기가 필수. 들여쓰기가 잘못되면 IndentationError 발생.
2. 반복문 (Loops)
2.1 For Loop
- 기능: 컬렉션(리스트, 튜플 등)의 요소나 범위(range)를 순회하며 작업 수행.
- 활용 사례: 리스트 순회, 특정 패턴 출력, 데이터 처리.
# 리스트 순회
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
# 숫자 리스트의 각 요소 제곱 계산
numbers = [1, 2, 3, 4, 5]
for number in numbers:
print(f"{number}의 제곱은 {number**2}입니다.")
2.2 While Loop
- 기능: 조건이 참일 동안 반복 실행.
- 활용 사례: 사용자 입력 반복, 특정 조건 만족 시까지 작업 반복.
# 카운트다운 예제
count = 5
while count > 0:
print(f"카운트다운: {count}")
count -= 1
print("발사!")
주의점
- 무한 루프 주의: 조건이 항상 참이면 반복문이 종료되지 않음.
- 조건이 False가 되는 지점 확인: 조건을 충족하지 않도록 값을 업데이트해야 함.
3. 제어 흐름 변경 (Break, Continue)
Break
- 기능: 반복문을 즉시 종료.
- 활용 사례: 특정 조건을 만족하면 반복 작업을 중단.
for i in range(1, 11):
if i == 5:
break
print(i)
Continue
- 기능: 현재 반복을 건너뛰고 다음 반복으로 진행.
- 활용 사례: 특정 조건을 건너뛰어 처리.
for i in range(1, 6):
if i % 2 == 0:
continue
print(i)
Break & Continue 활용 예제
# 사용자 입력에 따라 반복 종료 또는 특정 조건 건너뛰기
while True:
number = int(input("숫자를 입력하세요 (음수를 입력하면 종료): "))
if number < 0:
print("음수가 입력되어 프로그램을 종료합니다.")
break
if number % 2 == 0:
print("짝수입니다.")
continue
print("홀수입니다.")
4. range()
기능
- 숫자 시퀀스를 생성하여 반복문에서 사용.
- range(start, stop, step) 형식으로 시작값, 종료값, 증가값 설정 가능.
활용 사례
- 특정 범위의 숫자 순회, 패턴 생성, 특정 조건 반복.
# 홀수 출력
for i in range(1, 10, 2):
print(i)
# 1부터 10까지 짝수만 출력
for i in range(1, 11):
if i % 2 == 0:
print(i)
주의점
5. 중첩 반복문 (Nested Loop)
기능
- 반복문 내부에 또 다른 반복문을 포함해 다차원 데이터 처리 또는 모든 조합 생성.
- 활용 사례: 2D 배열 처리, 구구단 출력, 패턴 생성.
예제
# 모든 조합 생성
for i in range(1, 4):
for j in range(1, 4):
print(f"i={i}, j={j}")
# 구구단 출력
for i in range(2, 10):
print(f"{i}단:")
for j in range(1, 10):
print(f"{i} x {j} = {i*j}")
print() # 단마다 줄바꿈 추가
주의점
- 루프 수 증가: 중첩 횟수가 많아질수록 성능 저하.
- 복잡성 관리: 코드가 복잡해질 수 있으므로 루프의 목적과 데이터를 명확히 설계.