[Python TIL] Range 함수와 반복문

[Python TIL] Range 함수와 반복문

·

3 min read

Python을 사용하다 보면 숫자 시퀀스를 다루거나 반복문을 작성할 때 range를 자주 사용하게 됩니다.

이 함수는 메모리를 효율적으로 사용하면서 간단한 문법으로 반복 작업을 처리할 수 있게 해주는데요.

이번 글에서는 range의 기본 사용법부터 실수 방지 팁까지 살펴보겠습니다!


1. range 함수란?

range 함수는 다음과 같은 문법으로 사용할 수 있습니다:

range(start, stop, step)
  • start: (선택 사항) 시퀀스의 시작 숫자. 기본값은 0입니다.

  • stop: 시퀀스가 끝나는 숫자 (※ 이 숫자는 포함되지 않습니다!).

  • step: (선택 사항) 숫자 간의 간격. 기본값은 1입니다.

2. range 함수 사용 예제

1) 기본 형태: range(stop)

하나의 인수만 제공하면, start는 기본값인 0이고, stop까지만 지정됩니다. 시퀀스는 stop-1까지 생성됩니다.

for i in range(5):
    print(i)

출력:

0
1
2
3
4

2) 시작과 끝 설정: range(start, stop)

startstop을 지정하여 원하는 범위의 시퀀스를 생성할 수 있습니다.

for i in range(2, 6):
    print(i)

출력:

2
3
4
5

3) 간격 조정: range(start, stop, step)

step 매개변수를 추가하면 숫자가 증가하거나 감소하는 간격을 조정할 수 있습니다.

  • 오름차순 예제:

      for i in range(1, 10, 2):
          print(i)
    

    출력:

      2
      3
      4
      5
    
  • 내림차순 예제:

      for i in range(10, 0, -2):
          print(i)
    

    출력:

      10
      8
      6
      4
      2
    

3. 실수 방지 팁

1) step과 방향이 맞지 않는 경우

start < stop일 때 step이 음수면 반복문이 실행되지 않습니다. 반대로, start > stop일 때 step이 양수여도 실행되지 않습니다:

for i in range(5, 1, 1):  # 출력 없음
    print(i)

2) stop 포함하기

rangestop 값을 포함하지 않습니다. 마지막 값을 포함하려면 stop 값을 1만큼 늘려야 합니다:

for i in range(1, 6):  # 5 포함
    print(i)

4. 실전 활용

1) 내림차순 출력

내림차순으로 숫자를 출력하려면 음의 step을 사용하세요:

for i in range(10, 0, -1):
    print(i, end=" ")

출력:

10 9 8 7 6 5 4 3 2 1

2) 짝수 출력

step을 2로 설정하여 짝수만 출력하는 프로그램을 작성할 수 있습니다:

for i in range(2, 21, 2):
    print(i, end=" ")

출력:

2 4 6 8 10 12 14 16 18 20

3) 리스트와 함께 사용

리스트의 인덱스와 값을 동시에 처리하려면 range(len(list))를 사용할 수 있습니다:

arr = ['a', 'b', 'c', 'd']

for i in range(len(arr)):
    print(f"Index {i}: {arr[i]}")

출력:

Index 0: a
Index 1: b
Index 2: c
Index 3: d

5. 간단한 코딩 문제: 별 출력하기

정수 n이 주어졌을 때, 별(*)을 점점 줄여가며 출력하는 문제를 풀어봅시다. 이 문제는 range의 내림차순과 문자열 연산을 활용한 대표적인 예제입니다.

문제 설명:

  • 입력: 정수 n

  • 출력: 첫 번째 줄에는 별이 n개, 두 번째 줄에는 n-1개, ..., 마지막 줄에는 별이 1개 출력되도록 작성하세요.

코드 예제:

n = int(input("정수를 입력하세요: "))

for i in range(n, 0, -1):
    print("*" * i)

입력 예:

5

출력:

*****
****
***
**
*