SK플래닛 ai활용 데이터엔지니어 과정 2기/파이썬

파이썬 - 흐름제어(3)

dev-lee 2026. 3. 5. 16:35

반복문 + 조건문(필터링)

for n in range(1,10):
  #n값이 짝수면 출력, 홀수면 아무일도 하지 않는다 -> 이분법적 상황 -> if ~ else ~
  if n%2:
    print(n)
    
결과값 : 
1
3
5
7
9

----------------------------------------------------------------------

for n in range(1,10):
  #n값이 짝수면 출력, 홀수면 아무일도 하지 않는다 -> 이분법적 상황 -> if ~ else ~
  if not n%2:
    print(n)
    
결과값 : 
2
4
6
8

이중 for문

  • for문 안에 for문이 존재하는 경우
    • 중첩 반복문
      • 구구단, 게임 드로잉 시 패턴 표현
      • 딥러닝 > 영상/ 이미지 인식(CNN) > 필터/커널이 2D이미지를 스트라이드하여 특징 추출할 때
# 요구사항

'''
3 x 1 =  3
3 x 2 =  6
...
6 x 9 = 54
'''

# 앞자리는 3~6
# 뒷자리는 1~9
for i in range(3,7):
  print(f'구구단 {i}단')
  for j in range(1,10):
    #:>2 코드로 자릿수는 2자리, 오른쪽 정렬로 통일
    print(f'{i} x {j} = {i*j:>2}')
  #탈출 코드를 이용하여 샘플링 작업 구성
  #정답의 형태는 계속 빌드업하면서 완성
  #디테일 및 코드 리뷰로 최종 코드 구성
  break
  
결과값 : 
구구단 3단
3 x 1 =  3
3 x 2 =  6
3 x 3 =  9
3 x 4 = 12
3 x 5 = 15
3 x 6 = 18
3 x 7 = 21
3 x 8 = 24
3 x 9 = 27
구구단 4단
4 x 1 =  4
4 x 2 =  8
4 x 3 = 12
4 x 4 = 16
4 x 5 = 20
4 x 6 = 24
4 x 7 = 28
4 x 8 = 32
4 x 9 = 36
.
.
.
6 x 9 = 54
# 3~6단 출력
# 5단 제외 -> 조건식 -> 조건문
# 3x3, 4x4, 6x6은 제외
# 구구단 구현

for i in range(3,7):
  # 5단은 제외이므로 i가 5일 때 다음 작업 생략
  if i == 5: continue
  for j in range(1,10):
  	# 현재 구구단과 같은 숫자인 경우는 제외이므로 i와 j가 같을 때 다음 작업 생략
    if i == j: continue
    print(f'{i} x {j} = {i*j:>2}')

 

컨프리헨션(내포)

  • 간결하게 반복문 처리
  • 데이터를 직관적으로 일괄 처리
  • 처리 속도도 빠름, 람다와 비견될 정도(구성하기 나름)
  • 결과 중심주의로 작성하는 철학을 가짐
#결과를 리스트에 담는다.

results = list()

for i in range(3,7):
  for j in range(1,10):
    results.append(f'{i} x {j} = {i*j:>2}') ## 리스트에 구구단 텍스트를 추가

print(len(results), results)

----------------------------------------------------------------------

# 컴프리헨션 스타일로 마이그레이션(코드 리펙토링) 수행
# 최종 결과의 타입은 list

results = [f'{i} x {j} = {i*j:>2}' for i in range(3,7) for j in range(1,10)]

print(len(results),results)


# 위 코드와 아래 코드의 출력값은 동일함.
# 보기에 훨씬 간결하고 속도도 빨라서 컨프리헨션 사용 장려
  • 컨프리헨션 절차
    • 결과를 중심으로 변수 및 타입 생성하여 출력까지 구성
    • 출력 내용 구성
    • 반복 내용 구성
    • 필요 시 조건 추가
    • 확인 및 보정

 

break, continue, else

  • 흐름제어에 변수를 줄 수 있는 키워드
  • break
    • 반복문 탈출(exit)
    • break 키워드를 감싸고 있는(코드블럭, 들여쓰기) 가장 가까운 반복문(for, while)을 탈출함
  • continue
    • 키워드를 감싸고 있는(코드블럭, 들여쓰기) 가장 가까운 반복문(for, while)으로 점프 -> 반복문의 조건식 수행(뒤 코드 생략)
    • 통상 조건문과 같이 사용함
  • else
    • 반복문이 중단 없이(exit, break 없이) 정상적으로 모두 반복 후 종료되었다면 진입함(5바퀴 돌아야하는데 3바퀴밖에 안 돌았으면 진입하지 않음)
    • 위와같은 상황을 인지해야 한다면 사용
    • for(while) ~ else ~

break

#의도 : 샘플로 1개만 출력, 한바퀴 돌려본다(임시 코드)

for n in range(10):
  print(n)
  break
  
결과값 : 0
for n in range(10):
  print(n)

  #조건식 + break 결합 -> 통상적 표현
  if n > 3:
    break
    
 결과값 :
 0
 1
 2
 3
 4
for i in range(3, 7) :
  for j in range(1,10) :
    print(f'{i} * {j} = {i*j:>2}')
    break # 나를 감싸고 있는 가장 가까운 반복문을 탈출한다 -> 2번 라인 반복문 탈출
  break # 1번과 반응
  
결과값 : 2 * 1 = 2

continue

for i in range(3,7):
  if i == 4: continue # 4인 경우 건너뛰고 반복문 조건식 수행
  print(i)


결과값 :
3
5
6

else

for i in range(3):
  print('A', i)
  if i == 1:
    print('B', i)
    continue
    print('C', i)
else : print('continue 사용 시 else에 진입한다? YES')

결과값 : 
A 0
A 1
B 1
A 2
continue 사용 시 else에 진입한다? YES
for i in range(3):
  print('A', i)
  if i == 1:
    print('B', i)
    break
    print('C', i)
else : print('break 사용 시 else에 진입한다? NO') # 반복문이 지정된 횟수를 모두 반복하지 않았음.

결과값 : 
A 0
A 1
B 1

 

while문

  • 언제 끝날지 모르는 반복상황(무한루프)에서 사용
  • 조건 xx를 만족할 때까지(특정 x) 반복하라
  • 0 ~ 무한대 반복
  • 탈출 코드가 반드시 필요함
    • 조건문 + break
    • while문의 조건식에 변수를 적용하여 조정
      • 플래그(flag, 기능적인 표현) 변수를 이용하여 탈출
      • 중첩 반복문에서 복잡하게 꼬여있는 경우 , 간단하게 탈출코드 구성 -> 변수값을 변화시켜서 조건문을 False로 구성하여 탈출
      • 한마디로, 로직으로 처리한다고 할 수 있음
  • 문법
  while 조건식:
    statements
# 더미데이터
datas = [11, 12, 13]

# 요구사항
# datas에 데이터가 없을 때까지 반복(무한 루프), 각 멤버를 출력하시오
# 데이터가 없다 -> [] 빈 리스트 -> 조건식에서 사용하면 False로 해석 -> 반복문 종료됨
while datas:
  print(datas.pop()) # pop() : 멤버를 제거하고 반환하는데 역순으로 튀어나옴(마지막으로 들어온 순서대로 반환)
  
  결과값 : 
  13
  12
  11

종합

a = [1,2,3,4,5]

while a:
  tmp = a.pop()
  if tmp % 2 == 0:
    continue
  print(tmp, len(a))
  if len(a) == 1:
    break

else:
  print('반복문이 모든 반복회수를 정상적으로 수행했다')
  
결과값 :
5 4
3 2
1 0
반복문이 모든 반복회수를 정상적으로 수행했다

'SK플래닛 ai활용 데이터엔지니어 과정 2기 > 파이썬' 카테고리의 다른 글

파이썬-함수(2)  (0) 2026.03.06
파이썬-함수  (1) 2026.03.05
파이썬 - 흐름제어(2)  (0) 2026.03.04
파이썬 - 흐름제어(1)  (0) 2026.03.04
파이썬-문법공통_타입(3)  (0) 2026.03.03