2.2 반복문¶
반복문 (Loop Statement)
while
for
2.2.1 while 반복문¶
while
문은 조건식이 참(True
)인 경우 반복적으로 코드를 실행합니다.
활용법¶
문법
while <조건식>:
<코드 블럭>
예시
while True:
print('조건식이 참일 때까지')
print('계속 반복')
Warning
while
문 역시 조건식 뒤에 콜론(:
)이 반드시 필요하며, 이후 실행될 코드 블럭은 4spaces로 들여쓰기를 합니다.반드시 종료조건을 설정해야 합니다.


# 위의 flow chart를 조건문을 통해 만들어봅시다.
# 아래에 코드를 작성하세요.
# while 문을 활용해봅시다.
a = 0
while a < 5:
print(a)
a += 1
print('끝')
0
1
2
3
4
끝
[연습] while 문 작성하기¶
사용자가 “안녕”이라고 입력할 때까지 인사하는 코드를 작성해보세요.
# 아래에 코드를 작성하세요.
# while 문을 활용해봅시다.
# user_input에 초기값으로 비어있는 문자열을로 초기화하고,
# user_input에 할당되는 값이 '안녕'일 떄까지,
# '안녕?'을 출력하고
# user_input에 사용자의 입력값을 받는 코드를 작성하시오.
user_input = ''
while user_input != '안녕':
print('안녕?')
user_input = input('말해봐 : ')
안녕?
말해봐 : 안녕
[실습] 합(Summation)¶
1부터 사용자가 입력한 양의 정수까지의 총합을 구하는 코드를 작성해보세요.
[입력 예시]
10
[출력 예시]
55
# 아래에 코드를 작성하세요
n = 0
total = 0
user_input = int(input())
while n <= user_input:
total += n
n += 1
print(total)
10
55
[응용] 한자리 씩 출력하기¶
사용자로부터 숫자 입력 받은 양의 정수의 각 자리 수를 1의 자리부터 차례대로 출력하는 코드를 작성해보세요.
[입력 예시]
185
[출력 예시]
5
8
1
# 아래에 코드를 작성하세요.
n = int(input())
while n > 0:
print(n % 10)
n = n // 10
185
5
8
1
2.2.2 for 문¶
for
문은 시퀀스(string, tuple, list, range)를 포함한 순회가능한 객체(iterable)의 요소들을 순회합니다.
활용법¶
문법
for <임시변수> in <순회가능한데이터(iterable)>:
<코드 블럭>
예시
for menu in ['김밥', '햄버거', '피자', '라면']:
print(menu)

# flowchart를 for문을 통해 코드로 작성해봅시다.
# 아래에 코드를 작성하세요.
for num in [1, 2, 3, 4, 5]:
print(num)
print('끝')
1
2
3
4
5
끝
for
문에서 요소 값에 다른 값을 할당해도 다음 반복구문에 영향을 주지 않습니다.
다음 요소 값에 의해 덮어 씌워지기 때문입니다.
# for 문 안에서 임시 변수에 다른 값을 할당해도 반복구문에 영향을 주지 않습니다.
for i in range(10):
print(i)
i = 5
0
1
2
3
4
5
6
7
8
9
[연습] for 문 작성하기¶
for
문을 활용하여 사용자가 입력한 문자를 한글자씩 출력해보세요.
[입력 예시]
문자를 입력하세요 : 안녕!
[출력 예시]
안
녕
!
chars = input('문자를 입력하세요 : ')
문자를 입력하세요 : 안녕!
# 아래에 코드를 작성하세요.
# for 문을 활용해봅시다.
# 변수 char에 할당된 문자를 한글자씩 출력하는 for 반복문을 작성하시오.
for char in chars:
print(char)
안
녕
!
[실습] for 문과 if 문 작성하기¶
반복문과 조건문만 활용하여 1~30까지 숫자 중에 홀수만 출력해보세요.
[출력 예시]
1
3
5
...
27
29
# 아래에 코드를 작성하세요.
for i in range(1, 31):
if i % 2:
print(i)
1
3
5
7
9
11
13
15
17
19
21
23
25
27
29
리스트(list) 순회에서 index의 활용하기¶
range(리스트의 길이)¶
range()
와 순회할 list의 길이를 활용하여 index를 조작 가능합니다.
# range 함수로 0~3 범위를 순회하여 출력하는 for 문을 작성해봅시다.
for i in range(3):
print(i)
0
1
2
# range(리스트의 길이)를 활용해서 출력해봅시다.
# 0부터 리스트의 길이 만큼의 범위를 순회하면서 인덱스 숫자를 출력하는 for 문을 작성해봅시다.
menus = ['짜장면', '초밥', '피자']
for idx in range(len(menus)):
print(idx)
0
1
2
# 홀수번째 메뉴를 샐러드로 바꾼다면?
menus = ['짜장면', '초밥', '피자', '치킨', '햄버거', '곱창', '소고기', '삼겹살', '김치찌개']
for idx in range(len(menus)):
if idx % 2:
menus[i] = '샐러드'
print(menus)
['짜장면', '샐러드', '피자', '샐러드', '햄버거', '샐러드', '소고기', '샐러드', '김치찌개']
# 순서를 함께 출력해봅시다.
# 출력 예)
# 1번쨰 메뉴: 짜장면
# 2번쨰 메뉴: 초밥
# 3번쨰 메뉴: 피자
# 리스트의 길이 만큼의 범위를 순회하면서 메뉴의 순서와 해당 순서의 메뉴를 출력하는 for 문을 작성해봅시다.
menus = ['짜장면', '초밥', '피자']
for idx in range(len(menus)):
print(f'{idx + 1}번째 메뉴: {menus[idx]}')
1번째 메뉴: 짜장면
2번째 메뉴: 초밥
3번째 메뉴: 피자
enumerate()¶
인덱스(index)와 값(value)을 함께 활용 가능합니다.
enumerate()
를 활용하면, 추가적인 변수를 활용할 수 있습니다.
enumerate()
는 내장 함수 중 하나이며, 다음과 같이 구성되어 있습니다.
<img src="https://user-images.githubusercontent.com/18046097/61180561-3993e180-a653-11e9-9558-085c9a0ad65d.png", alt="enumerate">
# enumerate()를 활용해서 출력해봅시다.
lunchs = ['짜장면', '초밥', '피자']
for idx, lunch in enumerate(lunchs):
print(idx, lunch)
0 짜장면
1 초밥
2 피자
# enumerate() 에 의해 반환되는 인덱스와 값(value)를 함께 출력하는 for 반복문을 작성해봅시다.
for idx, lunch in enumerate(lunchs):
print(idx, lunch)
0 짜장면
1 초밥
2 피자
# enumerate()를 사용하였을 때 어떻게 표현이 되는지 확인해봅시다.
print(enumerate(lunchs))
print(list(enumerate(lunchs)))
<enumerate object at 0x000002534D39DAC0>
[(0, '짜장면'), (1, '초밥'), (2, '피자')]
# 첫번쨰 항목의 type을 확인해봅시다.
print(list(enumerate(lunchs))[0])
print(type(list(enumerate(lunchs))[0]))
(0, '짜장면')
<class 'tuple'>
숫자를 1부터 카운트 할 수도 있습니다.
# enumerate() 에 의해 반환되는 인덱스가 1로 시작하여 카운트되는 for 반복문을 작성해봅시다.
for idx, lunch in enumerate(lunchs, start=1):
print(idx, lunch)
1 짜장면
2 초밥
3 피자
2.2.3 반복제어¶
break
continue
for-else
break¶
반복문을 종료합니다.
for
나while
문에서 빠져나갑니다.
# while 문에서 break를 활용해봅시다.
# 종료 조건이 있는 while 문을 작성해봅시다.
n = 0
while n < 3:
print(n)
n += 1
0
1
2
# 종료 조건이 없는 while 문을 break 를 활용해서 종료시키는 코드를 작성해봅시다.
n = 0
while True:
if n == 3:
break
print(n)
n += 1
0
1
2
# for 문에서도 break를 사용할 수 있습니다.
# 0부터 9까지 순회하는 for 반복문 안에서
# 1을 초과하는 경우 '1 초과' 를 출력하며 종료하는 코드를 작성해봅시다.
for i in range(10):
if i > 1:
print('1 초과')
break
print(i)
0
1
1 초과
# 이 무한루프는 끝나지 않는다. break는 바로 위에 있는 반복문만 제어
# while True:
# print('while')
# for _ in range(10):
# print('for')
# break
while True:
print('while')
for _ in range(10):
print('for')
break
break
while
for
[연습] break
활용하기¶
조건문과 반복문,
break
를 활용하여 리스트에서 쌀이 나왔을때for
문을 멈추는 코드를 작성하세요.
[출력 예시]
보리
보리
쌀
잡았다!
rice = ['보리', '보리', '보리', '쌀', '보리']
# 아래에 코드를 작성하세요.
for i in rice:
print(i)
if i == '쌀':
print('잡았다!')
break
보리
보리
보리
쌀
잡았다!
continue¶
continue
문은 continue 이후의 코드를 수행하지 않고 다음 요소부터 계속(continue)하여 반복을 수행합니다.
for i in range(6):
if i % 2 == 0:
continue
# continue 이후의 코드는 실행되지 않습니다.
print(f'{i}는 홀수다.')
1는 홀수다.
3는 홀수다.
5는 홀수다.
[연습] continue
문 작성하기¶
나이가 입력된 리스트가 있을때, 조건문과 반복문, continue를 활용하여 20살 이상일때만 “성인입니다”라는 출력을 하는 코드를 작성하세요.
[출력 예시]
23 살은 성인입니다.
30 살은 성인입니다.
25 살은 성인입니다.
31 살은 성인입니다.
ages = [10, 23, 8, 30, 25, 31]
# 아래에 코드를 작성하세요.
for age in ages:
if age < 20:
continue
print(f'{age} 살은 성인입니다.')
23 살은 성인입니다.
30 살은 성인입니다.
25 살은 성인입니다.
31 살은 성인입니다.
else¶
끝까지 반복문을 실행한 이후에 실행됩니다.
반복에서 리스트의 소진이나 (
for
의 경우) 조건이 거짓이 돼서 (while
의 경우) 종료할 때 실행됩니다.하지만 반복문이
break
문으로 종료될 때는 실행되지 않습니다. (즉,break
를 통해 중간에 종료되지 않은 경우만 실행)
# break가 안되는 상황을 확인해봅시다.
for i in range(3):
print(i)
if i == 100:
print(f'{i}에서 break 실행됨.')
break
else:
print("break 실행안됨.")
0
1
2
break 실행안됨.
# break가 되는 상황을 확인해봅시다.
for i in range(3):
print(i)
if i == 1:
print(f'{i}에서 break 시행됨.')
break
else:
print('break 시행안됨.')
0
1
1에서 break 시행됨.
[연습] for-else
활용하기¶
조건문과 반복문, break, else 를 통해서 아래의 코드와 동일한 코드를 작성하세요.
numbers 리스트에 4가 있을 경우
True
를 출력하고, 없을 경우False
를 출력한다.
[출력 예시]
False
numbers = [1, 3, 7, 9]
# 아래에 코드를 작성하세요.
for number in numbers:
if number == 4:
print('True')
break
else:
print('False')
False
pass¶
아무것도 하지 않습니다.
문법적으로 문장이 필요하지만, 프로그램이 특별히 할 일이 없을 때 자리를 채우는 용도로 사용할 수 있다.
pass
와 continue
차이
# pass
# 0부터 4의 범위를 순회하며 출력하는 반복문 안에서 3이 나오는 경우 pass 하는 조건문을 작성해봅시다.
for i in range(5):
if i == 3:
pass
print(i)
0
1
2
3
4
# continue
# 0부터 4의 범위를 순회하며 출력하는 반복문 안에서 3이 나오는 경우 continue 하는 조건문을 작성해봅시다.
for i in range(5):
if i == 3:
continue
print(i)
0
1
2
4