반복문 (Loop Statements)
반복문은 특정 코드 블록을 여러 번 실행합니다
for 문
- 시퀀스(리스트, 튜플, 문자열 등)의 각 항목에 대해 반복합니다.
while 문
- 조건이 참인 동안 코드 블록을 반복 실행합니다.
연습문제 1: 구구단 출력
문제: 사용자로부터 출력할 구구단의 단을 입력받아, 해당 단의 구구단을 출력하는 프로그램을 작성하세요.
연습문제 2: 리스트 요소 합계
문제: 주어진 리스트의 모든 요소의 합계를 구하는 프로그램을 작성하세요.
numbers의 모든 요소의 합계를 계산하고
출력하는 프로그램입니다. 코드를 단계별로 설명해 드리겠습니다.
numbers라는 리스트가 정의되어 있습니다. 이 리스트에는 1, 2, 3, 4,
5라는 정수들이 포함되어 있습니다.
total이라는 변수를 0으로 초기화합니다. 이 변수는 리스트의 모든
요소의 합계를 저장하는 데 사용됩니다.
-
for반복문은numbers리스트의 각 요소를 순회합니다. num변수는 리스트의 각 요소를 순차적으로 가리킵니다.-
total += num구문은total에num의 값을 더합니다. 이 구문은total = total + num과 동일합니다. -
반복문이 실행될 때마다 리스트의 각 요소가
total에 더해집니다.
반복문 실행 과정:
-
num = 1일 때:total = total + 1->total = 0 + 1->total = 1 -
num = 2일 때:total = total + 2->total = 1 + 2->total = 3 -
num = 3일 때:total = total + 3->total = 3 + 3->total = 6 -
num = 4일 때:total = total + 4->total = 6 + 4->total = 10 -
num = 5일 때:total = total + 5->total = 10 + 5->total = 15
-
print함수는f-string을 사용하여 메시지를 출력합니다. -
f-string은 문자열 내에 변수 값을 삽입하는 기능을 제공합니다.{total}부분은total변수의 값을 문자열에 삽입합니다. - 최종 출력은 "리스트의 모든 요소의 합계는 15입니다."가 됩니다.
요약
이 코드는 다음과 같은 작업을 수행합니다:
numbers리스트를 정의합니다.total변수를 0으로 초기화합니다.-
for반복문을 사용하여 리스트의 각 요소를 순회하면서total에 더합니다. - 리스트의 모든 요소를 더한 결과를 출력합니다.
연습문제 3: 팩토리얼 계산
문제: 사용자로부터 입력받은 정수의 팩토리얼을 계산하는
프로그램을 작성하세요. 팩토리얼은
n! = n * (n-1) * (n-2) * ... * 1로 정의됩니다.
input() 함수는 사용자로부터 문자열 형태의 입력을 받습니다.
int() 함수는 입력된 문자열을 정수로 변환합니다.number 변수에는 사용자가 입력한 정수가 저장됩니다.
factorial 변수를 1로 초기화합니다.-
for반복문은range(1, number + 1)을 사용하여 1부터number까지(포함) 순차적으로 반복합니다. -
range(1, number + 1)은 1부터number까지의 정수를 생성합니다. -
factorial *= i는factorial = factorial * i와 동일합니다. 반복문이 실행될 때마다factorial변수에i값을 곱합니다.
반복문 실행 과정 (number가 5인 경우):
-
i = 1일 때:factorial = 1 * 1->factorial = 1 -
i = 2일 때:factorial = 1 * 2->factorial = 2 -
i = 3일 때:factorial = 2 * 3->factorial = 6 -
i = 4일 때:factorial = 6 * 4->factorial = 24 -
i = 5일 때:factorial = 24 * 5->factorial = 120
-
print함수는f-string을 사용하여 결과를 출력합니다. -
f-string은 문자열 내에 변수 값을 삽입하는 기능을 제공합니다.{number}와{factorial}부분은 각각number와factorial변수의 값을 문자열에 삽입합니다. -
예를 들어,
number가 5라면 최종 출력은 "5의 팩토리얼은 120입니다."가 됩니다.
요약
이 코드는 다음과 같은 작업을 수행합니다:
- 사용자가 입력한 정수를
number변수에 저장합니다. factorial변수를 1로 초기화합니다.-
1부터
number까지의 정수를 순회하면서factorial변수에 현재 정수 값을 곱합니다. - 계산된 팩토리얼 값을 출력합니다.
이 코드는 반복문을 사용하여 팩토리얼을 계산하는 방법을 보여줍니다. 팩토리얼은 주어진 정수까지의 모든 정수의 곱을 의미합니다.
연습문제 4: 짝수와 홀수 구분
문제: 1부터 100까지의 숫자를 반복문을 사용하여 순회하면서, 각 숫자가 짝수인지 홀수인지 출력하는 프로그램을 작성하세요.
for 반복문은 range(1, 101)을 사용하여 1부터
100까지의 정수를 순회합니다.
range(1, 101)은 1부터 100까지의 정수를 생성합니다.i는 현재 반복 중인 숫자를 가리킵니다.if 조건문은 i가 짝수인지 확인합니다.i % 2는 i를 2로 나눈 나머지를 구합니다.i % 2 == 0은 i가 2로 나누어떨어지는지(즉,
짝수인지) 판별합니다.
i % 2 == 0이 참이면, i는 짝수입니다.print 함수는 f-string을 사용하여
결과를 출력합니다.
f-string은 문자열 내에 변수 값을 삽입하는 기능을 제공합니다.
{i} 부분은 i 변수의 값을 문자열에 삽입합니다.
i가 2라면 출력은 "2는 짝수입니다."가 됩니다.-
else블록은if조건이 거짓일 경우 실행됩니다. 즉,i가 짝수가 아닌 경우입니다. -
홀수인 경우,
print함수는f-string을 사용하여 결과를 출력합니다. -
예를 들어,
i가 1이라면 출력은 "1는 홀수입니다."가 됩니다.
요약
이 코드는 다음과 같은 작업을 수행합니다:
- 1부터 100까지의 숫자를 반복문을 통해 순회합니다.
- 각 숫자
i가 짝수인지 홀수인지 판별합니다. i가 짝수이면 "i는 짝수입니다."를 출력합니다.i가 홀수이면 "i는 홀수입니다."를 출력합니다.
연습문제 5: 역순 출력
문제: 사용자로부터 정수를 입력받아, 1부터 입력받은 정수까지의 숫자를 역순으로 출력하는 프로그램을 작성하세요.
input() 함수는 사용자로부터 문자열 형태의 입력을 받습니다.
int() 함수는 입력된 문자열을 정수로 변환합니다.number 변수에는 사용자가 입력한 정수가 저장됩니다.
for 반복문은 range(number, 0, -1)을 사용하여
number부터 1까지의 정수를 역순으로 생성합니다.
range(start, stop, step) 함수에서 start는 시작 값,
stop은 종료 값, step은 증감 값입니다.
number에서 시작하여 1까지 1씩 감소하며 반복합니다. 종료 값인
0은 포함되지 않습니다.
-
print()함수는 현재 반복 중인i값을 출력합니다. i는 반복문을 통해 매번 1씩 감소하는 값을 가집니다.
예시 실행 과정
사용자가 5를 입력한 경우:
number = 5가 됩니다.-
for i in range(5, 0, -1)은 5에서 1까지의 숫자를 생성합니다.
반복문 실행 과정:
i = 5일 때:print(5)i = 4일 때:print(4)i = 3일 때:print(3)i = 2일 때:print(2)i = 1일 때:print(1)
최종 출력
입력된 정수가 5라면, 출력은 다음과 같습니다:
요약
이 코드는 다음과 같은 작업을 수행합니다:
- 사용자가 입력한 정수를
number변수에 저장합니다. -
for반복문을 사용하여number부터 1까지의 숫자를 역순으로 순회합니다. - 각 숫자를 출력합니다.
이 코드는 range() 함수의 사용법과 역순으로 숫자를 순회하는
방법을 보여줍니다.
연습문제 6: 리스트 내 특정 값 찾기
문제: 주어진 리스트에서 특정 값을 찾고, 그 값의 인덱스를 출력하는 프로그램을 작성하세요. 만약 값이 리스트에 없다면 "값을 찾을 수 없습니다"라는 메시지를 출력하세요.
numbers라는 리스트가 정의되어 있습니다. 이 리스트에는 10, 20, 30,
40, 50이라는 정수들이 포함되어 있습니다.
input() 함수는 사용자로부터 문자열 형태의 입력을 받습니다.
int() 함수는 입력된 문자열을 정수로 변환합니다.value_to_find 변수에는 사용자가 입력한 정수가
저장됩니다.
found 변수를 False로 초기화합니다. 이 변수는 찾고자
하는 값이 리스트에 존재하는지를 나타내는 데 사용됩니다.
for 반복문은 enumerate(numbers)를 사용하여 리스트
numbers를 순회합니다.
enumerate() 함수는 리스트의 각 요소와 그 요소의 인덱스를 동시에
반환합니다.
index 변수는 현재 요소의 인덱스를, value 변수는
현재 요소의 값을 가리킵니다.
if 조건문은 현재 요소 value가
value_to_find와 같은지 확인합니다.
print 함수는 f-string을 사용하여
결과를 출력합니다.
found 변수를 True로 설정합니다.break 문은 반복문을 종료합니다. 찾고자 하는 값을 찾으면 더 이상
반복할 필요가 없기 때문입니다.
-
if not found:조건문은found변수가False인 경우에 실행됩니다. 즉, 찾고자 하는 값을 리스트에서 찾지 못한 경우입니다. -
print("값을 찾을 수 없습니다.")는 값을 찾지 못했음을 사용자에게 알립니다.
예시 실행 과정
사용자가 30을 입력한 경우:
value_to_find = 30-
for반복문이 실행됩니다.-
index = 0,value = 10-> 조건 불일치 -
index = 1,value = 20-> 조건 불일치 -
index = 2,value = 30-> 조건 일치- 출력: "30 값은 리스트의 인덱스 2에 있습니다."
found = Truebreak로 반복문 종료
-
-
if not found:조건문은 실행되지 않음 (값을 찾았기 때문)
최종 출력
입력된 값이 리스트에 있는 경우:
30 값은 리스트의 인덱스 2에 있습니다.
요약
이 코드는 다음과 같은 작업을 수행합니다:
- 사용자로부터 찾고자 하는 값을 입력받습니다.
-
for반복문과enumerate()함수를 사용하여 리스트의 각 요소와 그 인덱스를 순회합니다. - 현재 요소가 찾고자 하는 값과 일치하는지 확인합니다.
- 일치하면 해당 인덱스를 출력하고, 반복문을 종료합니다.
- 일치하는 값이 없으면 "값을 찾을 수 없습니다."를 출력합니다.
이 코드는 리스트 내에서 특정 값을 찾고, 그 값의 인덱스를 찾는 방법을 보여줍니다.
numbers의 요소를 역순으로 출력하는
프로그램입니다. 각 부분을 단계별로 설명해 드리겠습니다.
numbers라는 리스트가 정의되어 있습니다. 이 리스트에는 10, 20, 30,
40, 50이라는 정수들이 포함되어 있습니다.
for 반복문은 range(len(numbers) - 1, -1, -1)을
사용하여 리스트 numbers를 역순으로 순회합니다.
len(numbers)는 리스트 numbers의 길이(즉, 요소의
개수)를 반환합니다. 이 경우, len(numbers)는 5입니다.
range(start, stop, step) 함수에서 start는 시작 값,
stop은 종료 값, step은 증감 값입니다.
start는 len(numbers) - 1로, 이는 리스트의 마지막
인덱스(4)입니다.
stop은 -1로 설정하여, 0까지 포함되도록 합니다.step은 -1로 설정하여, 인덱스를 1씩 감소시킵니다.print() 함수는 현재 인덱스 i에 해당하는 리스트
numbers의 요소를 출력합니다.
예시 실행 과정
리스트 numbers의 요소를 역순으로 순회합니다:
-
i = 4일 때:numbers[4]는 50 -> 출력: 50 -
i = 3일 때:numbers[3]는 40 -> 출력: 40 -
i = 2일 때:numbers[2]는 30 -> 출력: 30 -
i = 1일 때:numbers[1]는 20 -> 출력: 20 -
i = 0일 때:numbers[0]는 10 -> 출력: 10
최종 출력
리스트의 요소가 역순으로 출력됩니다:
요약
이 코드는 다음과 같은 작업을 수행합니다:
-
리스트
numbers의 길이를 구하여 마지막 인덱스부터 첫 번째 인덱스까지의 범위를 설정합니다. -
for반복문과range()함수를 사용하여 리스트의 인덱스를 역순으로 순회합니다. - 현재 인덱스에 해당하는 리스트의 요소를 출력합니다.
이 코드는 리스트의 요소를 역순으로 순회하는 방법을 보여주며,
range() 함수의 다양한 사용법을 이해하는 데 도움이 됩니다.
연습문제 8: 특정 범위의 합계 구하기
문제: 사용자로부터 두 개의 정수를 입력받아, 그 범위 내에 있는 모든 정수의 합을 구하는 프로그램을 작성하세요. 두 정수 중 어느 것이 더 큰지는 미리 알 수 없습니다.
input() 함수는 사용자로부터 문자열 형태의 입력을 받습니다.
int() 함수는 입력된 문자열을 정수로 변환합니다.start 변수에는 첫 번째 정수가,
end 변수에는 두 번째 정수가 저장됩니다.
if 조건문은 start 변수가 end 변수보다
큰지 확인합니다.
start가 end보다 크다면, 두 변수를 서로
교환합니다.
start가 end보다 작거나 같도록
합니다.
total 변수를 0으로 초기화합니다. 이 변수는 범위 내 모든 정수의
합을 저장하는 데 사용됩니다.
for 반복문은 range(start, end + 1)을 사용하여
start부터 end까지의 모든 정수를 순회합니다.
range() 함수의 start는 시작 값,
end + 1은 종료 값으로, end 값까지 포함되도록
합니다.
i를 total에 더합니다.print() 함수는 f-string을 사용하여 결과를
출력합니다.
start부터 end까지의 합을 total 변수에
저장된 값으로 출력합니다.
예시 실행 과정
사용자가 5와 2를 입력한 경우:
start = 5end = 2-
if start > end:조건이 참이므로start와end의 값을 교환하여start = 2,end = 5가 됩니다. total = 0으로 초기화합니다.-
for반복문이 실행됩니다:-
i = 2:total += 2->total = 2 -
i = 3:total += 3->total = 5 -
i = 4:total += 4->total = 9 -
i = 5:total += 5->total = 14
-
- 최종 출력:
2부터 5까지의 합은 14입니다.
최종 출력
입력된 값에 따라 출력됩니다:
요약
이 코드는 다음과 같은 작업을 수행합니다:
- 사용자로부터 두 개의 정수를 입력받습니다.
-
두 정수의 대소 관계를 확인하고 필요시 교환하여
start가 항상end보다 작거나 같도록 합니다. -
start부터end까지의 모든 정수를 합산합니다. - 합계를 출력합니다.
이 코드는 조건문과 반복문을 결합하여 사용자의 입력을 처리하고, 그 범위 내의 숫자들을 합산하는 방법을 보여줍니다.









