Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 반복문 없이 n의 배수 m개 출력하는 방법

이 튜토리얼에서는 반복문(loop)을 사용하지 않고 어떤 수 n의 배수 m개를 구하는 프로그램을 작성해 보겠습니다. 예를 들어 n = 4, m = 3이라면 출력 결과는 4, 8, 12가 되어야 합니다. 즉, 4의 배수 세 개를 구하는 것이죠. 여기서 핵심 제약 조건은 바로 반복문을 사용하면 안 된다는 점입니다.

range() 함수 활용하기

반복문 없이 원하는 결과를 얻으려면 Python의 range() 함수를 사용할 수 있습니다. 그렇다면 range() 함수는 정확히 어떤 역할을 할까요? range() 함수는 범위(range) 객체를 반환하며, 이 객체는 반복자(iterator)로 변환하여 사용할 수 있습니다.

먼저 range() 함수의 기본 문법부터 살펴보겠습니다.

문법

range(start, end, step)
  • start: 숫자 범위의 시작 값
  • end: 숫자 범위의 끝 값 (단, end 값 자체는 범위에 포함되지 않습니다)
  • step: 인접한 두 숫자 사이의 간격 (생략 가능하며, 생략 시 기본값은 1입니다)
range(1, 10, 2) --> 1, 3, 5, 7, 9
range(1, 10)    --> 1, 2, 3, 4, 5, 6, 7, 8, 9

예제 코드

## range() 함수 사용 예시
## start = 2, end = 10, step = 2 -> 2, 4, 6, 8
evens = range(2, 10, 2)

## range 객체를 리스트로 변환하여 출력
print(list(evens))

## start = 1, end = 10, step 생략 -> 1, 2, 3, 4, 5, 6, 7, 8, 9
nums = range(1, 10)

## range 객체를 리스트로 변환하여 출력
print(list(nums))

실행 결과

위 코드를 실행하면 다음과 같은 결과를 확인할 수 있습니다.

[2, 4, 6, 8]
[1, 2, 3, 4, 5, 6, 7, 8, 9]

n의 배수 m개 출력하기

이제 range() 함수의 동작 원리를 이해했으니, 본격적으로 배수를 구하는 코드를 작성해 보겠습니다. 구현 순서는 다음과 같습니다.

  1. n과 m 값을 초기화합니다.
  2. n의 배수를 반환하도록 range() 함수를 작성합니다.
  3. 시작 값을 n으로 설정하고, 끝 값을 (n * m) + 1로, step 값을 n으로 지정합니다.

핵심 아이디어는 간단합니다. 시작점을 n으로 잡고, 간격(step)을 n으로 설정하면 range() 함수가 자동으로 n의 배수들만 생성해 줍니다. 끝 값에 1을 더해주는 이유는 range() 함수의 특성상 끝 값이 범위에 포함되지 않기 때문입니다.

예제 코드

## n과 m 초기화
n = 4
m = 5

## n의 배수를 반환하는 range() 함수 작성
multiples = range(n, (n * m) + 1, n)

## range 객체를 리스트로 변환하여 출력
print(list(multiples))

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

[4, 8, 12, 16, 20]

마무리

이처럼 range() 함수를 활용하면 for문이나 while문 같은 반복문을 전혀 사용하지 않고도 n의 배수 m개를 손쉽게 구할 수 있습니다. range(start, end, step)의 세 가지 매개변수만 올바르게 설정하면 되기 때문에 코드도 매우 간결해집니다. 튜토리얼을 읽으면서 궁금한 점이나 어려운 부분이 있다면 댓글로 남겨주세요!