Welcome to the Matrix

020. for 문을 이용한 파이썬 반복문과 활용 본문

Python/PythonBasic

020. for 문을 이용한 파이썬 반복문과 활용

haru.keiko 2021. 1. 7. 23:28

for문을 이용한 파이썬 반복문 썸네일

파이썬에서 반복문을 사용할 때 주로 사용하는 것은 아마도 지금 소개할 'for 반복문'일 것입니다. 

이전 시간에 반복문, 그리고 'while 반복문'에 대해서 알아봤는데요, 이번에 for문이라는 것을 알게 된다면 for문을 이용한 반복문이 while 문을 이용한 반복문보다 조금 더 간단하고 직관적으로 사용할 수 있음을 알 수 있을 것입니다. 

 

while문에 대해서 아직 잘 모르고 있다면, 아래 페이지를 먼저 참고하고 오세요~

 

019. while 반복문을 이용한 파이썬 반복문

오늘은 파이썬 반복문 그 첫 번째 시간으로 'while 반복문'에 대해서 알아보겠습니다. 반복문 만약 동일한 문장을 두 번 실행해야 한다면 어떻게 할까요? 여러 가지 방법이 있겠지만, 가장 먼저 떠

null-0.tistory.com

 

for 반복문

while 반복문은 몇 번을 반복해야 할지 그 반복 횟수를 모를 경우에 사용한다고 했습니다. 

반면, for 반복문은 얼마나 반복을 해야 할지 그 횟수를 알고 있을 때 사용하는 반복문입니다. 즉, for문의 경우 정확한 반복 횟수를 가지고 있는 대상을 이용해 반복문을 실행하는 것입니다. 

for 반복문은 반복 횟수가 정해져 있는 경우 사용할 수 있는 반복문입니다.

 

for 반복문의 기본 구조는 아래와 같습니다. 

for 변수 in 시퀀스 객체:
    반복을 수행할 문장들..

직역하자면, '시퀀스 객체라는 것 안에 for문의 변수에 넣을 데이터가 있을 존재할 동안, 반복을 수행할 문장들을 수행하라' 정도가 되겠습니다. 조금 억지스러운가요? 

 

좀 더 자세히 for문의 동작을 설명하자면, 다음과 같은 순서로 반복문을 실행합니다. 

  1. 개수를 가지고 있는 자료형인 시퀀스 객체의 데이터가 존재할 동안
  2. 순차적으로 시퀀스 객체의 데이터를 for문의 변수에 저장을 하고
  3. 반복을 수행할 문장들을 수행합니다.
  4. 만일 더 이상 변수에 저장할 시퀀스 객체의 데이터가 없다면, 반복은 멈추게 됩니다. 

 

'시퀀스 객체'라는 것은 문자열과 같이 어떠한 순서로 데이터가 나열된 자료형이라고 할 수 있습니다. 문자열 'Hello'를 예로 들자면, 'Hello'는 'H', 'e', 'l', 'l', 'o'와 같은 문자가 순서대로 나열되어 있습니다. 그래서 각 문자를 인덱스(index)를 통해 접근할 수 있는 것이죠. 

시퀀스 객체에는 앞으로 알게 될 리스트, 튜플 등이 있습니다. 이것들에 대해서는 앞으로 천천히 알아보도록 하겠고, 지금은 for문에 대해서 집중하겠습니다. 

시퀀스 객체는 객체를 이루는 요소들이 연속적으로 순서를 이루어 이어진 자료형을 말합니다.

 

for문도 while문과 동일하게 문장의 끝에 콜론(':')을 붙여서 그 아래 for문에 종속적인 문장들을 블록으로 판단하고 들여 쓰기를 사용합니다. 

 

먼저 for문을 사용한 간단한 예를 먼저 살펴보겠습니다. 

greet = 'Hello'
for i in greet:
	print(i)

파이썬 for문 기본 예제

 

greet라는 변수에 문자열 'Hello'를 저장합니다. 

그리고, for문의 문법에 맞게 greet 변수의 각 요소들이 존재하는 동안에 변수 i에 각 요소를 할당하고, 그 요소를 출력합니다. 

결국 문자열 변수 greet의 각 요소 'H', 'e', 'l', 'l', 'o'를 출력하게 됩니다. 

 

파이썬의 for문은 문자열과 같은 시퀀스 객체의 각 요소를 처음부터 순차적으로 접근하고, 그 요소가 존재하는 동안에만 반복해 for문에 종속된 블록을 실행하게 됩니다.

for문은 시퀀스 객체의 각 요소를 처음부터 순차적으로 접근, 요소가 존재하는 동안만 반복합니다.

 

range

range는 '범위'라는 의미의 영어 단어입니다.

그리고, 파이썬에서는 이 range라는 이름의 함수를 사용해 일정 범위의 정수로 이루어진 시퀀스 객체를 표현할 수 있습니다.

예를 들어, range(10)이라고 하면, 0부터 9까지의 10개의 숫자 범위를 나타내는 시퀀스 객체를 표현합니다. 

시퀀스 객체를 표현하는 range 함수 예제

 

위에서 본 예제는 동일한 기능을 하는 range() 함수의 사용법입니다. 

표현할 시퀀스 객체가 0부터 시작할 경우, 시작점을 생략할 수 있고 마지막 요소보다 1 큰 값을 넣어 시퀀스 객체를 표현합니다. 결괏값인 시퀀스 객체는 range(0, 10)으로 0~9까지의 순서 있는 요소들을 나타냅니다. 

range() 함수에 대해서는 시퀀스 자료형 '리스트'를 다룰 때쯤 해서 다시 알아보겠습니다. 

 

for문에서는 이 range로 표현된 시퀀스 객체를 이용해서 반복을 할 수 있습니다. 

다음 예를 살펴보겠습니다. 

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

range 함수를 이용한 for 반복문 예제

 

range(0, 5)로 표현한 시퀀스 객체의 요소가 존재하는 동안, 그 순서대로 변수 i에 저장하고 반복합니다. 

print() 함수로 반복할 때 변수 i의 값을 출력하면, range(0, 5)를 통해 생성된 시퀀스 객체의 내용을 확인할 수 있습니다. 앞서 살펴본 대로 0~4의 값을 가지고 있습니다. 

파이썬은 기본적으로 숫자를 0부터 셉니다.

 

for문의 break

for문에서도 while문과 마찬가지로 반복을 하는 도중에 반복을 중단하고 반복문을 빠져나와야 할 상황이 있을 경우 'break'를 사용할 수 있습니다. 

 

아래의 예를 먼저 살펴봅시다. 

for in in range(0, 100):
	print(i)
	if i == 4:
		break

for문의 break문 사용 예제

 

for문의 내용으로 보아 원래는 0~99까지 반복을 하며 해당 숫자를 출력해야 합니다. 

하지만, if 조건문을 사용해서 만약 range(0, 100) 함수를 통해 생성한 시퀀스 객체의 요소를 담고 있는 변수 i의 값이 4일 경우, break 키워드를 이용해 반복문을 빠져나오도록 프로그래밍을 했습니다. 

그래서 0~4까지만 반복을 하고 for 반복문을 빠져나올 수 있었습니다. 

 

이렇게 for문에서도 break를 사용해 반복문에 브레이크를 걸 수 있습니다. 

 

for문의 continue

앞서 for문에서 break의 사용법에 대해서 알아보았습니다. 

그 내용으로 미루어 짐작하건대, for문의 continue 또한 while 반복문의 continue와 다르지 않아 보입니다. 

네! 그렇습니다.

그 의미는 완전히 동일합니다. 

 

for문의 반복문을 실행하는 도중 continue 키워드를 만나게 되면, 실행의 위치는 for문의 반복문 첫 문장으로 되돌아갑니다.

while문에서 continue의 예제로 사용했던 10 이하의 홀수를 출력하는 프로그램을 for문을 이용해서 작성해보고 이를 살펴보도록 하겠습니다. 

for i in range(1, 11):
	if i%2 == 0:
		continue
	print(i)

for문의 continue 사용 예제

 

range(1, 11) 함수를 사용해서 1~10까지의 시퀀스 객체를 표현합니다. 

그리고 시퀀스 객체의 요소가 존재할 동안 순서대로 변수 i에 저장을 하고, 반복문을 실행합니다. 

반복문 내부에서 변수 i의 값이 짝수(i%2 == 0) 일 경우, continue 키워드를 사용해서 반복문의 처음으로 되돌아갑니다. 

그렇지 않고 홀수일 경우에는 print(i)를 통해 숫자를 출력합니다. 

 

위 예를 통해서 알 수 있듯, for문을 이용하는 경우, while문을 이용하는 경우보다도 훨씬 간단하고 직관적으로 프로그래밍을 할 수 있습니다.  하지만, for문을 사용하려면 반드시 반복 횟수를 알고 있어야 합니다. 그렇지 않을 경우에는 while문을 사용해서 반복문을 실행해야 합니다. 

 

for문의 경우, 시퀀스 객체를 사용할 경우 그 활용도는 엄청나게 증가합니다. 

하지만, 아직 리스트, 튜플 등의 내용을 알지 못하기 때문에 이번 시간에는 많은 부분들을 직접 확인할 수는 없었습니다. 조만간 대표적인 시퀀스 객체인 리스트와 튜플을 확인하고 더 다양한 예를 통해 강력한 for문을 살펴보도록 하겠습니다. 

 

마지막으로 간단하게 for문가 range()를 사용한 구구단 프로그램을 살펴보고 마치겠습니다. 

for i in range(2, 10):
	for j in range(1, 10):
		print(i*j, end=' ')
	print('')

이중 for문을 이용한 구구단 프로그램 예제

 

위 구구단 프로그램은 왜 이렇게 작성했는지 그 내용은 각자 한번 고민해 보세요~

 

만약, 반복문을 몰랐다면.. 

이런 간단한 구구단 프로그램도 상당히 골치아프게 짜야했을 것입니다!!