프로그래밍을 보다 더 잘 활용하기 위해서는 제어구조를 꼭 배워야 합니다. if문을 활용한 조건문을 살펴봤는데, 이번 글에서는 for문을 활용한 반복문을 살펴보려고 합니다.
반복문이란?
반복문은 특정 작업을 반복적으로 수행하도록 명령하는 구조입니다. 반복 작업은 일정한 조건을 만족할 때까지 계속되거나, 정해진 횟수만큼 수행할 수도 있어요. 반복의 기준이 조건인지 횟수인지에 따라 명령어 구조도 달라지는데요. 다음과 같은 예를 생각해보면 조금 더 이해할 수 있을 것 같습니다.
- 조건이 기준인 반복문: 팔이 움직이지 않을 때까지 팔굽혀펴기를 하라
- 횟수가 기준인 반복문: 30회를 달성할 때까지 팔굽혀펴기를 하라
반복문의 종류
일반적으로 반복문은 while문과 for문을 사용하게 됩니다.
- while문: 특정 조건을 만족하는 동안 반복합니다. while이라는 영어 단어 자체가 '~하는 동안에'라는 의미를 가지고 있어요.
- for문: 정해진 횟수를 달성하는 반복문에 사용합니다. for라는 영어 단어 역시 '~동안에'라는 의미를 가지는데, 기간에 대한 의미를 가지고 있어요. 'for 3 days'라고 하면 '3일 동안'인 것이지요.
이번 글에서는 range 함수를 사용한 for문에 대해 알아보겠습니다.
범위를 생성하는 range 함수
range 함수는 정해진 범위의 숫자를 생성합니다. 그래서 반복 작업에서 횟수를 정해주기 위해 사용해요.
range 함수의 기본 형식
range 함수는 다음과 같은 방법으로 사용할 수 있어요.
- range(A): 0부터 A-1까지 숫자를 생성합니다.
- range(A, B): A부터 B-1까지 숫자를 생성합니다.
- range(A, B, C): A부터 B-1까지의 숫자를 C의 간격으로 생성합니다.
range 함수의 예제
다음 코드를 작성해 보며 range 함수에 대해 이해해 볼 수 있습니다.
# 1. range(5): 0부터 4까지 생성
print(list(range(5))) # [0, 1, 2, 3, 4]
# 2. range(2, 5): 2부터 4까지 생성
print(list(range(2, 5))) # [2, 3, 4]
# 3. range(2, 25, 5): 2부터 5 간격으로 25보다 작은 수 생성
print(list(range(2, 25, 5))) # [2, 7, 12, 17, 22]
for문과 range 함수의 활용
이제 for문을 사용해 보려고 합니다. for문은 횟수를 사용한 반복문이기 때문에 range 함수를 사용하여 반복 횟수를 지정해주고, for문 내에 어떤 명령어를 반복할지 작성해 주면 됩니다.
기본형식
for 변수 in range(시작, 끝, 간격):
반복 실행할 명령
예제 | 2의 거듭 제곱 출력하기
0부터 9까지의 정수를 사용해 2의 거듭 제곱을 출력하는 프로그램을 작성해 보려고 합니다.
# 2의 거듭제곱 출력
for i in range(10):
print(f"2^{i} = {2 ** i}")
코드 설명
- range(10)은 0부터 9까지의 숫자를 생성합니다.
- 변수 i에 range가 생성한 숫자들을 순차적으로 대입하며 for문 내 명령어를 실행합니다.
- 2 ** i는 2의 i제곱 계산을 하는 연산자입니다.
실행 결과
2^0 = 1
2^1 = 2
2^2 = 4
2^3 = 8
2^4 = 16
2^5 = 32
2^6 = 64
2^7 = 128
2^8 = 256
2^9 = 512
예제 | 2의 1제곱부터 출력하는 2의 거듭 제곱 출력 프로그램
앞선 예제에서는 range(10)을 사용해 i가 0인 시점부터 반복을 시작했습니다. 그래서 처음 출력되는 결과도 2의 0제곱인 1부터 출력되었습니다. 만약에 2의 1제곱인 2부터 출력하고 싶다면 어떻게 해야할까요? range의 양식을 다음 코드와 같이 수정하면 됩니다.
# i를 1부터 시작하도록 수정
for i in range(1, 11):
print(f"2^{i} = {2 ** i}")
실행 결과
2^1 = 2
2^2 = 4
2^3 = 8
...
2^10 = 1024
range의 간격 조정
range 함수의 세 번째 인수를 사용하여 반복 간격을 조정할 수도 있습니다. 예를 들어, 1부터 20까지 3의 배수만 출력하려면 다음과 같이 작성합니다.
for i in range(3, 21, 3):
print(i)
실행 결과
3
6
9
12
15
18
1부터 20까지의 range 범위를 생성하고 조건문을 사용하여 3으로 나눈 나머지가 0인지 확인하며 출력을 수행할 수도 있습니다. 그러면 20번을 반복하는 반복문이 됩니다.
반면에, 위에 작성된 코드와 같이 range의 사용법을 달리하여 간격을 조정하며 반복문을 수행할 수도 있습니다. 대신, 3부터 출력해야 3의 배수를 출력할 수 있습니다. 이렇게 하면 반복문의 시행 횟수를 훨씬 줄일 수 있습니다.
응용 예제 | 1부터 100까지의 합
1부터 100까지의 합을 계산하여 그 결과를 출력하는 프로그램을 작성해 보려고 합니다. 아이디어는 이렇습니다. for문의 증감 변수인 i가 range에서 생성하는 1부터 100까지의 숫자를 따라가며 total 변수에 값을 누적합니다. 반복문을 마친 후 최종 결과를 출력합니다.
total = 0
for i in range(1, 101):
total += i
print(f"1부터 100까지의 합: {total}")
실행 결과
1부터 100까지의 합: 5050
특정 변수에 값을 누적하는 연산자를 누적 연산자라고 합니다. 작성된 코드에서는 total += 1이라고 작성된 부분입니다. 이 부분은 total = total + 1이라고 작성할 수도 있습니다. 변수의 불필요한 중복 작성을 피하기 위해 만들어진 연산자예요. 필요한 경우 다른 사칙연산자에 대해서도 누적 연산자를 사용할 수 있습니다.
마치며
반복문은 프로그래밍에서 필수적인 도구입니다. 이를 통해 반복 작업을 단순화하고 효율적으로 처리할 수 있어요. for문과 range 함수는 수학적 계산, 데이터 처리, 다양한 프로그램에서 중요한 역할을 합니다. range 함수의 활용 방법을 잘 기억해 두시고 반복문의 조건을 정확하게 설정하여 작성하는 연습을 해 보세요.