16. 제어문 - 반복
0. 참고
서수(序數, Ordinal Number, 순수 한글 순서 표현)
- 순서를 나타내는 수
- 몇 번째인지를 나타냄
- 예시: 첫째(1st), 둘째(2nd), 셋째(3rd), 네 번째(4th)
- ✔ 사용 상황: 등수, 줄 서기, 단계, 순서 표시
기수(基數, Cardinal Number, 순수 한글 숫자 표현)
- 수량을 나타내는 수
- 몇 개인지를 나타냄
- 예시: 하나(1), 둘(2), 셋(3), 넷(4)
- ✔ 사용 상황: 개수 세기, 수량 표현, 숫자 연산
한자어 숫자 표현 (한자어)
- ➡ 기수(수량) 또는 서수(순서) 모두에 혼용되나 격식적, 공식
- 공식 문서, 기술서, 공문, 법률, 수학적 표현에서 많이 사용
- 예시: 일(一), 이(二), 삼(三)
- ✔ 사용 예시: 제1회, 제2조
구분 | 표현 | 역할 | 특징 | 사용처 예시 |
서수(한글) | 첫째, 둘째, 셋째 | 순서 | 구어체, 일상적 | 첫째 아들, 둘째 방 |
기수(고유어) | 하나, 둘, 셋 | 수량 | 구어체, 친근함 | 사과 하나, 둘 먹다 |
기수(한자어) | 일, 이, 삼 | 수량/순서 (혼용) | 격식, 공식적 | 제1회, 1번, 3개 |
1. 반복(loop)
1.1 반복이란?
- 반복이란, 동일한 작업을 여러 번 되풀이하여 실행하는 것을 말합니다.
- 기본적으로 반복은 조건이 없으면 무한히 실행될 수 있기 때문에,
개발자는 반복 횟수나 종료 조건을 명확히 지정하여 반복을 제어하는 코드를 작성해야 합니다.
1.2 문제 파악(반복된 소스코드를 구현할 때)
# 개발 언어의 모든 기능은,
# 개발자가 프로그래밍을 보다 쉽고 효율적으로 할 수 있도록 돕기 위한 것입니다.
# 1 #
# print("hello python")를 100번 출력하는 코드를 작성해보세요.
# 10번 세는 수, 기수
print("hello python") # 1
print("hello python") # 2
print("hello python") # 3
print("hello python") # 4
print("hello python") # 5
print("hello python") # 6
print("hello python") # 7
print("hello python") # 8
print("hello python") # 9
print("hello python") # 10
# ...
print("hello python") # 100
1.3 반복 횟수 을 범위로 표현하는 방법

"10번"이라는 반복 횟수를 범위로 표현하는 방법은,
위 숫자에서 연속된 정수 10개를 세는 과정과 동일합니다.
시작 숫자는 0 또는 1입니다.
1.4. 그리고, 범위를 표현할 때는 다음과 같은 4가지 요소가 필수적입니다.
- 시작 숫자
- 마지막 숫자
- 증감 숫자
- 비교 연산자
1.5 범위를 4가지 요소를 사용해 표현하면, 5가지 경우의 수가 있습니다.
# "10번"을 표현하는 경우의 수
1 < x <= 11
1 <= x < 11
0 <= x <= 9
0 < x <= 10
0 <= x < 10
1.6 컴퓨터는 모든 값을 0부터 시작하는 것이 기본 규칙입니다.
이는 메모리 주소, 배열의 인덱스, 반복문 등의 동작 원리에서 일관되게 적용됩니다.
개발자 또한 이러한 규칙에 맞추어 반복, 인덱스, 범위 등을 0부터 시작하도록 구현하는 것이 표준적이며, 논리적 혼동을 줄이는 관례입니다.
0 <= x <= 9
0 < x <= 10 # 0을 포함하지 않는다.
0 <= x < 10
1.7 결론
0 <= x < 10
- 컴퓨터: 0부터 시작 → 절대적, 변경 불가
- 인간/개발자: 10번 반복, 10개, 10회 → 더 직관적
- 개발자는 이 간극을 이해하고 0부터 9까지가 10개라는 감각을 가져야 함
1.8 S/W 개발자 관점의 범위 표현 (횟수)
개발자는 반복 작업이 원하는 횟수만큼만 실행되도록 논리적으로 제어해야 합니다.
이를 위해 "특정 횟수"를 수학적·논리적으로 표현하고, 컴퓨터가 이해할 수 있는 코드 형태로 구현해야 합니다.

(참고) C 언어 for 반복문과 비교
for (int i = 0; i < 10; ++i)
{
printf("Hello Python ");
}
2. range( )
2.1 참고
2.2 반복 횟수 제한에 필요한, "1)시작 숫자, 2)끝 숫자, 3)증감 숫자" 학습
- 0 <= x < 10
증감 숫자가 생략되었다면, 증감 숫자는 1 이다. - 0 , 10
비교 연산자가 생략되었다면, 시작 숫자 이상 (<=), x, (<) 마지막 숫자 미만이다. - 10
시작 숫자가 생략되었다면, 시작 숫자는 0 이다. - 마지막 숫자는 인간의 관점에서 "반복 횟수" 이다.
# range(마지막 숫자)
# range(시작 숫자, 마지막 숫자)
# range(시작 숫자, 마지막 숫자, 증감폭)
# 1 #
# 위 3가지 range() 함수 생성 방법을 모두 사용하여
# 0 ~ 9 까지 10개의 요소를 가진 리스트를 모두 출력하세요
# hint
# list(range(0, 10))
# 2 #
# 위 range 함수를 참고해, 3의 배수 5개가 포함된 리스트를 출력하세요.
# 결과 >> [3, 6, 9, 12, 15]
# 3 #
# 정수 1개를 입력받고
# max = 10 변수를 이용하여
# 0 ~ 9까지의 10개의 정수가 포함된 리스트를 출력하세요.
# 4 #
# 정수 1개를 입력받고
# max = 10 변수를 이용하여
# 해당 숫자의 구구단을 출력하세요
# 결과 >> 몇 단을 출력할까요? 3 [3, 6, 9, 12, 15, 18, 21, 24, 27]
weight = int(input('몇 단을 출력할까요? '))
max = 10
lst = list(range(weight, (max*weight) ,weight))
print(lst)
3.반복문 for
3.1 for 반복문과 정수
# for 반복문에서 raneg() 함수를 사용한다는 의미?
# for 변수 in range(숫자 미만):
# for 변수 in range(시작 숫자, 마지막 숫자):
# for 변수 in range(시작 숫자, 마지막 숫자, 증감폭):
# 차이 생각해보기
# for i in list(range(10)):
# print(i)
# for i in range(10):
# print(i)
# 1 #
# 위 for 문 사용 방법 1가지를 골라서, 연속된 정수 2 ~ 9 를 출력하세요.
# 2 #
# 위 for 문 사용 방법 1가지를 골라서, 연속된 정수 2 ~ 9, 8개의 요소를 가진 리스트로 출력하세요.
# hint
# 빈 리스트에 추가하세요.
# 리스트에 값 추가 방법 >> list변수.append(값)
3.2 for 반복문과 리스트 내포 List Comprehension
# 리스트 내포
# for 변수 in range("문자열"):
# for 변수 in list(range("문자열")):
# for 변수 in range(숫자):
# for 변수 in list(range(숫자)):
# for 변수 in 튜플
# for 변수 in list(튜플)
# 1 #
# 아래 for 문을 이용하여, 정수 2 ~ 9, 8개의 요소를 출력하세요.
# for i in "문자열":
# for i in list("문자열"):
# for j in range(숫자):
# for j in list(range(숫자)):
# for k in 튜플:
# for k in list(튜플):
3.3 순차sequence 특성을 가진 자료과 enumerate( ) 함수

# 1. 순차 특성을 가진 자료형과 딕셔너리.items():
# for i in 문자열:
# for i in 리스트:
# for i in 튜플:
# for i in 딕셔너리.items():
# 1.1 문자열, 리스트, 튜플을 for 반복분으로 출력하세요
# 2. enumerate() 함수 사용
# 문자열 예시
# String = "ABCD"
# for i, j in enumerate(String):
# print("String Loop:", i, j)
# 2.1 문자열, 리스트, 튜플을, for 반복분에서 enumerate() 함수를 사용해
# 인덱스와 값을 모두 출력하세요
# 3. Dictionary.items() 함수
# Dict = {0:"A", 1:"B", 2:"C", 3:"D"} # 중괄호
# for i, j in Dict.items():
# print(i, j)
# 딕셔너리.items(): 를 사용해, for 반복분으로 출력하세요
# 리스트
List = ["A", "B", "C", "D"] # 대괄호
# 튜플
Tuple = ("A", "B", "C", "D") # 소괄호
# 딕셔너리
Dict = {0:"A", 1:"B", 2:"C", 3:"D"} # 중괄호
for i, j in enumerate(List):
print("List Loop:", i, j)
for i, j in enumerate(Tuple):
print("Tuple Loop", i, j)
for i, j in Dict.items():
print("Dict Loop",i, j)
# 1 튜플
# lst_tp = [(0, 'A', "Hello"),(1, 'B', "List"),(2, 'C', "Loop")]
# 위 리스트를 for 문에서 출력하세요.
4. while
④.① while과 for의 공통점
# while 반복문 사용법
start = 0 # 시작 숫자
end = 10 # 끝 숫자
while start < end:
print("hello python", start+1) # 한 가지 일
start += 1 # 증감
# 1 #
# while 반복문을 사용해서, 정수 1~100 범위의 홀수를 출력하세요
④.② while과 for의 차이점
# 2 #
# ? 를 채우세요
# 일반적인 while 사용법, True, False, 무한
# chk = flag
chk = True
pw = ???? # 사용할 비밀번호 숫자 4자리를 설정하세요.
while ??? :
num = input("Pin 4자리를 입력해주세요.")
if int(num) == pw:
print("Pin 통과")
chk = ????? # while 반복문을 종료시는 조건을 입력하세요.
print("Pin 오류. 다시 ", end='' )
5. else ~ continue ~ break
우선, 아래 else, continue, break 는 가급적 사용하지 않는다.
5.1 for ~ continue, break
#
# for 변수 in 범위:
# ...
# continue # for문 내부 시작점으로 돌아간다.
# ...
# break # for문을 종료한다.
lst = [1,2,3,4,5]
for i in lst:
if i < 3:
print("출력", i, " < 3")
continue
else:
break;
5.2 for ~ else
#
# for 변수 in 범위:
# # 반복 실행 코드
# else:
# # 반복문 정상 종료시 실행 코드
lst = [1,2,3,4,5]
for i in lst:
if i < 3:
print("출력", i, " < 3")
continue
else:
print("반복문 정상 작동 완료")
5.3 while ~ continue, break
# while 조건:
# 반복 실행 코드
# continue # while 문 내부 시작점으로 돌아간다.
# ...
# break # while 문 종료
# start = 0 # 시작 숫자
# end = 10 # 끝 숫자
while start < end:
start += 1 # 증감
if x < 3:
print("출력", i, " < 3")
continue
print("출력", i, " >= 3")
if x > 7:
break