23. 파이썬 for 문과 range 함수

  • 네이버 블로그 공유하기
  • 카카오톡 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기

파이썬 반복문 for 문에 대해 두번째 시간을 가져보겠습니다.

파이썬 반복문 for 문과 함께 자주 사용되는 함수 range 함수에 대해 알아보겠습니다.
파이썬 for 문과 함께 자주 사용되는 range 함수 의 경우는 숫자 리스트를 자동으로 만들어 줍니다.
그렇기에 for 문과 함께 사용되는 경우가 많습니다.

range 함수의 간단한 예

Python
>>> r = range(5)
>>> r
range(0, 5)

위 예에서 range(5) 는 0 에서 부터 5 를 포함하지 않는 5까지, 즉 5 미만의 숫자를 포함하는 range 객체를 만들어 주게 됩니다.
처음 시작하는 숫자와 끝나는 숫자를 지정해 주려면 range(시작 숫자, 끝나는 숫자) 형태로 사용하면 됩니다.
이때 끝나는 숫자의 경우에는 포함 되지 않기 때문에 원래 생각한 끝나는 숫자보다 하나 더 크게 사용해야 합니다.

Python
>>> r = range(1, 6)
>>> r
range(1, 6)

range 함수 예제

예를 들어 파이썬 for 문과 range 함수 를 사용하면 1 부터 100 까지 의 합을 구하는 프로그래밍을 쉽게 구현 할 수 있습니다.

Python
>>> a = 0
>>> for i in range(1, 101):
...     a = a + i
...
>>> print(a)
5050

위의 코드를 살펴보겠습니다.
range(1, 101) 은 숫자 1부터 101 미만, 그러니깐 1부터 100 까지의 데이터를 가지고 있는 객체입니다.
그러므로 위에서 i 변수에 숫자 1부터 100 까지 하나하나 차례로 대입이 되면서 a = a + i 문장을 반복적으로 실행을 하고 최종적으로 a 변수에는 1부터 100까지 의 합인 5050 이 됩니다.
이전에 진행했던 점수를 확인해서 합격 문장을 출력해 주는 코드에서도 range 함수를 사용해서 변경할 수 있습니다.

원래 코드입니다. j 변수 리스트의 숫자 순서를 변경해 확인하기 좋게만 바꿔서 진행해 보겠습니다.

Python
# mark_02.py
j = [80, 75, 90, 65, 30]
n = 0
for i in j:
    n = n + 1
    if i < 70:
        continue
    print("%d 번째 학생은 합격입니다. 축하합니다." % n)

위 코드를 range 함수를 이용해 변경해 보겠습니다.

Python
# mark_03.py
j = [80, 30, 75, 90, 65]
for i in range(len(j)):
    if j[i] < 70:
        continue
    print("%d 번째 학생은 합격입니다. 축하합니다." % (i + 1))
Python
1 번째 학생은 합격입니다. 축하합니다.
3 번째 학생은 합격입니다. 축하합니다.
4 번째 학생은 합격입니다. 축하합니다.

실행해보면 동일한 결과를 보여주는 걸 확인 할 수 있습니다.
위에서 사용 된 len 함수는 리스트 와 함께 사용되면서 리스트 안의 요소의 갯수가 몇개인지를 확인하는 함수가 되었습니다. 따라서 range(len(j)) 의 경우는 range(5) 가 되는 것 입니다.
i 변수에 0 부터 4 까지의 숫자가 대입이 되고, j[i] 의 경우에는 차례대로 80, 30, 75, 90, 65 의 점수를 가지게 됩니다.

파이썬 for 문과 range 함수를 이용한 구구단

for 문과 range 함수를 이용하면 간단하게 구구단 코드를 작성 할 수 있습니다.

Python
>>> for a in range(2, 10):      # 1번째 for 문
...     for b in range(1, 10):  # 2번째 for 문
...         print(a * b, end=" ")
...     print(' ')
...
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81

위의 코드를 살펴보면 for문이 2번이 나옵니다. 1번째 for 문에서는 2 부터 9 까지의 숫자를 (range(2, 10)) 문장을 통해 a 변수에 차례로 대입을 하고 a 가 처음 2 일 때 2번째 for 문을 만납니다. 2번째 for 문에서는 1 부터 9 까지의 숫자를 (range(1, 10))을 통해 j 에 대입되게 되면서 그 다음 문장인 print(a * b) 문장을 수행하게 됩니다.
결국 a 가 2 일 때 2*1, 2*2, 2*3, … 2*9 가 차례대로 수행이 되며 출력이 되고, a 가 3 일 때 3*1, 3*2… 이런식으로 반복되서 출력이 되게 됩니다.
print(a * b, end=” “) 처럼 print 함수에 end 파라미터를 설정한 이유는 해당 결과를 출력할 때 다음줄로 넘기지 않고 그 줄에서 계속 출력해 주기 위해서 입니다.
이는 print 문의 end 매개 변수에 기본적으로 줄바꿈 문자인 ‘\n’ 이 설정 되어 있기 때문입니다.
그리고 print(‘ ‘)는 2단, 3단…. 을 구분하기 위해서 사용되었습니다.
두번째 for 문이 끝나면 다음 줄부터 출력을 이어나가게 하는 용도입니다.

  • 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
23. 파이썬 for 문과 range 함수

Leave a Comment