티스토리 뷰

반복문은 조건문과 함께 프로그래밍에서 가장 많이 등장하는 문법입니다. 반복문의 구조를 정확히 이해하고, 다양한 자료구조와 연결할 수 있다면 수 많은 응용이 가능합니다. 오늘은 파이썬을 이용한 반복문에 대해 알아보도록하겠습니다.

 

파이썬 반복문
1. 반복문은 왜 필요한가?
2. range함수
3. for문 ( feat. 다른 언어와 비교하기 )
 3-1 기본문법으로 보는 차이점
 3-2 for문의 변수확장
4. while문
5. 이중 for문

반복문은 왜 필요한가?

프로그래밍에서 반복문은 왜 사용해야될까요? 소프트웨어, 즉 컴퓨터가 이해할 수 있는 언어는 사람의 생각을 하나하나씩 풀어놓은 구조입니다. 간단하게 예를 들어보겠습니다

  • 현재 12시 1분, 12시 40분이 되면 약속장소로 출발 예정
  • 사람의 경우는 시계를 일정한 시간동안 확인하여 시간확인 후 정해진 시간에 출발합니다
  • 하지만 컴퓨터는 시계를 볼 줄모르고, 일정한 시간을 이해하지 못해 구현하기가 힘듭니다.
  • 그렇기 때문에 분 단위가 증가할때마다, 체크하여 12시 40분이 될때 출발하도록 명령해야합니다.
  • 12시 1분에 시간 체크, 12시 2분 시간체크, 12시 3분 시간체크,........, 12시 40분 시간체크 후 출발
  • 즉, 동일한 구문을 40번 반복할 수 없기때문에 반복문을 통해 효율적이고 직관적인 프로그래밍을 할 수 있도록 지원할 수 있습니다.
  • 때문에 반복문이 필요하고 자주 사용됩니다.

 

range함수

위에서 설명했듯이 프로그래밍에서 반복문은 '얼마나 반복해야하는지'가 결국 핵심입니다. 즉, 몇번 반복할 것인가를 지정해주기 위해 파이썬에서는 range함수를 이용합니다. 가령 10회를 반복하고 싶은 경우 range함수를 이용해서 10번만 반복하도록 정해줄 수 있습니다. range함수의 용법은 아래와 같습니다.

  • range( 시작점, 끝점, 단계 )
  • range( 끝점 ), 시작점과 단계를 생략한 활용
  • 시작점 : 범위의 시작지점
  • 끝점 : 범위가 끝나는 점
  • 단계 : 시작점과 끝점까지 기본 간격
#1
print(list(range(10)))

#2
print(list(range(0,10,1)))
print(list(range(0,10)))

#3
print(list(range(0,10,2)))
print(list(range(0,10,3)))
print(list(range(0,10,-1)))
#1 실행결과
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

#2 실행결과
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

#3 실행결과
[0, 2, 4, 6, 8 ]
[0, 3, 6, 9]
[]

#1과 #2의 실행결과를 보시면 여러분들이 이 포인트를 생각하실 수 있습니다. 하나는 range함수에서 단계가 1씩 증가하는 경우에 단계를 생략해도 괜찮다이고, 다른 하나는 시작 숫자를 0으로 하고 싶은 경우 시작점을 생략해도 된다는 것입니다.

  • 시작점, 끝점, 단계 중 단계가 생략 가능
  • 시작 숫자가 0으로 지정하고 싶은 경우 시작점을 생략가능

range함수를 사용하는 방법에 대해 알아보았으니 이제 파이썬에서 for문 사용방법에 대해 알아보겠습니다.

 

for문 ( feat. 다른 언어와 비교하기 )

기본문법으로 보는 차이점

파이썬에서 for문의 기본적 사용방법은 아래와 같습니다.

  • for "변수" in "범위"
for i range(5) :
	print(i)

위 방법이 바로 파이썬에서 사용하는 for문의 기본 용법입니다. 기존 C언어에서는 위 구문을 어떻게 사용했는지 확인 해볼 까요?

for(int i = 0; i < 5; i++) {
  printf("%d\n",i);
}

위에서 작성한 파이썬과 C언어 프로그램은 동일한 0, 1, 2, 3, 4를 출력하는 프로그램입니다. 하지만 파이썬이 조금 더 직관적으로 작성이되며 초보자에게 조금 더 쉽게 이해됩니다. 그리고 파이썬에서는 변수 i를 C처럼 'int i'와 같은 형태로 선언해주지 않아도, 디버깅 에러가 발생하지 않습니다.

for문의 변수확장

다시 한번 for문의 용법에 대해 알아보고 가겠습니다.

  • for "변수" in "범위"
  • 범위는 range함수를 이용해서 숫자범위를 작성할 수 있습니다
  • 하지만 파이썬은 여기서 다른언어와 다른 확장성을 가집니다
  • 범위에는 리스트 형 자료구조도 들어갈 수 있으며, 정수형변수를 반환하는 함수도 가능합니다
list = ['a', 'b', 'c', 'd', 'e']

#1
for i in list :
	print(i)

#2
for i in range(len(list)) :
	print(i)
#1 실행결과
a
b
c
d
e

#2 실행결과
0
1
2
3
4

#1의 결과를 보겠습니다. 분명 "범위"에 리스트형 변수가 들어갔는데, 출력된 결과는 리스트의 데이터들이 처음부터 끝까지 하나씩 출력되는 모습을 확인할 수 있습니다. 즉, 파이썬은 리스트형 변수를 range함수 대신 사용하여 리스트 변수를 각각 반복문에 활용할 수 있습니다.

#2의 결과는 range함수 내 list함수의 길이를 변수화하여 선언했습니다. 즉, list의 길이는 5이므로, 함수값은 0에서 4까지 5번반복되어 출력됩니다. 이와 같이 range함수 내에 저렇게 변수를 사용하여 범위를 표현할 수 있습니다.

 

while문

while문은 마찬가지로 반복문입니다. 하지만 for문과 가장 두드러지는 차이점은 while문의 경우는 일반적으로 범위를 잘 지정하지 않습니다. 반면 for문은 range와 같은 범위를 선언해야합니다. 즉, while문은 범위를 주로 설정하지 않기 때문에 특정 조건이 갖추어지면 반복을 종료하는 형태로 프로그래밍합니다.

sum = 0
while True :
  sum = sum + 1
  if(sum==5) :
    break

위는 while과 True를 사용한 무한 반복문 안에 sum이 5일때 반복문을 종료하도록 만든 프로그램입니다. 기본적으로 While과 True를 사용하면 반복이 무한번 지속되기 때문에, 특정 조건이 갖춰지면 break를 통해 반복문을 빠져나오도록 해주어야 합니다. 

댓글
공지사항