반복문 (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 = True
break
로 반복문 종료
-
-
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 = 5
end = 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
까지의 모든 정수를 합산합니다. - 합계를 출력합니다.
이 코드는 조건문과 반복문을 결합하여 사용자의 입력을 처리하고, 그 범위 내의 숫자들을 합산하는 방법을 보여줍니다.