파이썬 기초 문법 6

윤수환·2025년 3월 23일

반복문

반복(iteration): 동일한 문장을 여러 번 반복시키는 구조
프로그램 내에서 동일한 명령을 일정 횟수만큼 반복 수행토록 하는 제어문


while 문

while 개요

  • 특정 조건을 만족(조건이 참)하는 동안 주어진 명령을 반복 실행함

아래와 같은 형태로 사용함

while 조건:
    반복할 구문

명령문은 반드시 들여쓰기를 하여야 함.

num = 1
while num <= 5:      # num이 5 이하인 동안 반복
    print('hello')
    num += 1             # 한 번 반복될 때마다 num을 1씩 증가

while in Iterable 객체

while 의 조건에 Iterable 객체를 사용할 수 있으나 일반적으로 사용하지 않기 때문에 for loop문에서 다루기로 함.

무한 루프

  • 무한히 반복하는 구문
    반복 종료 조건이 없거나, 종료 조건을 충족시킬 수 없는 상황일 때 발생

반복 종료 조건이 없는 경우

while True:
    print('hello')
while 문의 조건이 True 라는 상수이므로, 조건이 항상 참이 되어 무한 루프

종료 조건을 충족시킬 수 없는 상황 I

num = 1
while num <= 5:
    print('hello')
num에 대한 증감식이 없어 항상 해당 조건을 만족 (1<=5 이므로)하게 되어 무한 루프

종료 조건을 충족시킬 수 없는 상황 II

num = 10
while num > 5:
    print('hello')
    num += 1
num 이 항상 5보다 크므로 (10 >5 이므로) 무한 루프
  • 무한 루프가 발생하면 많은 CPU 리소스가 필요하게 됨

  • 무한 루프를 강제 종료하기 위해서 Keyboard Interrupt를 발생시켜야 함 Ctrl + C

  • 의도적으로 무한 루프를 사용하는 경우도 있음
    e.g., 클라이언트의 요청을 대기하는 서버 프로그램

break & continue

  • break - 반복문에서 제어 흐름을 벗어나기 위해(loop 종료) 사용
  • continue - continue 아래 구문들을 건너뛰고 다음 조건으로 반복문을 계속 실행(PASS)
num = 0
while True:
    num = num + 1
    if num == 10:    # num == 10 이면 while문 종료
        break
    if num %2 == 0:  # 짝수라면 PASS
        continue
    print(num)
    print('마지막')
print('while 종료')

while else

  • while 조건이 거짓이어서 반복이 종료될 때 수행할 구문을 else 블록에 명시할 수 있음
  • while 문이 정상 종료된 후 수행되는 구문
  • break 에 의해 반복이 종료되면 else 블록은 실행되지 않음
# while 조건문에 의해 정상 종료된 경우, else 구문 실행
num = 1
while num <= 10:
    print(num, end=' ')
    num = num + 1
else:
    print('정상종료')
print('while 종료')

'''
1 2 3 4 5 6 7 8 9 10 정상종료
while 종료
'''

# break 에 의해 도중에 종료된 경우, else 구문 실행 X
num = 1
while num <= 10:
    if(num == 8):
        break
    print(num, end=' ')
    num = num + 1
else:
    print('정상종료')
print('while 종료')

중첩 while

  • while 문 내에 while 을 중첩하여 사용할 수 있음
    들여쓰기에 유의해야 함
num1 = 2
num2 = 1
while num1 <= 9:      # num1이 9 이하인 동안 반복
        num2 = 1
    while num2 <= 9:  # num2가 9 이하인 동안 반복
        print(f'{num1} * {num2} = {num1*num2}')
        num2 += 1
    num1 += 1

num1 == 2 일때, num2는 1에서 9까지 수행하며 반복

num1 == 3 일때, num2는 1에서 9까지 수행하며 반복

...

num1 == 9 일때, num2는 1에서 9까지 수행하며 반복

num1 == 10 일때, 조건이 거짓이 되어 반복 종료


for loop

  • for 의 조건에 Iterable 객체를 사용할 수 있음
  • Python에서 지원하는 Iterable 객체는 String, List, Tuple, Range, Dictionary, Set 등이 있음
for item in Iterable :
    반복할 구문

iterable 객체의 첫 번째 요소부터 마지막 요소까지 차례로 변수에 대입되며 명령어를 수행함

numList = [1, 2, 3, 4]
for i in numList:
    print(i, end=' ')

#1 2 3 4

numList = [[1, 'a'], [2, 'b'], [3, 'c'], [4, 'd']]
for i, j in numList:
    print(i, j, end=' ')

# 1 a 2 b 3 c 4 d

for in Range

  • range는 숫자 리스트를 자동 생성해주는 함수임.
  • Slicing과 사용법이 유사함
numRange1 = range(1, 10)
for i in numRange1:
    print(i, end=' ')      # 1 2 3 4 5 6 7 8 9

for i in range(9, 0, -1):
    print(i, end=' ')    # 9 8 7 6 5 4 3 2 1

for i in range(1, 10, 2):
    print(i, end=' ')    # 1 3 5 7 9


# 1부터 100까지의 합
sum = 0
for i in range(1, 101):
    sum += i
print(sum)   # 5050

for in Dictionary

for in dictionary에서 dictionary는 기본적으로 key를 반환함

subjectDic = {'kor': '0100', 'eng': '0101', 'math': '0102'}
for t in subjectDic:
    print(t, end=' ')

# kor eng math

keys(), values(), items() 메소드를 사용하면 key 뿐만 아니라 value, 또는 key와 value를 동시에 반환하게 할 수 있음

subjectDic = {'kor': '0100', 'eng': '0101', 'math': '0102'}
for t in subjectDic.keys():
    print(t, end=' ')        # kor eng math

for t in subjectDic.values():
    print(t, end=' ')        # 0100 0101 0102

for t in subjectDic.items():
    print(t, end=' ')        # ('kor', '0100') ('eng', '0101') ('math', '0102')

for t, x in subjectDic.items():
    print(t, x, end=' ')     # kor 0100 eng 0101 math 0102

enumerate

  • index와 Iterable 객체의 원소가 pair인 tuple형태로 반환
  • 다른 iterable 객체에도 동일하게 적용
numList = [1, 2, 3, 4]
for i in enumerate(numList):
	print(i, end=' ')

# (0, 1) (1, 2) (2, 3) (3, 4)
for index, value in enumerate(numList):
    	print(f'{index}: {value}')

# 1: 2
# 2: 3
# 3: 4

0개의 댓글