본문 바로가기

Data analysis story

[Python] 반복문 for문(range 함수, 응용한 여러 프로그램 예시)

안녕하세요 여러분! 저번 시간에 if 조건문에 대해서 공부해봤습니다!

 

if 조건문을 설명하기 앞서 파이썬의 기본적인 구조 3가지에 대해 소개해드렸었는데요!

다시 한번 볼까요?

선택 구조는 if 조건문에서 사용됨을 확인했었습니다.

 

오늘은 반복 구조에 대해서 살펴볼텐데요!

반복 구조는 for문과 while문에서 사용되는데요

for문은 정해진 횟수만큼 반복하는 구조이고

while문은 어떤 조건이 만족되는 동안, 계속 반복하는 구조입니다.

 

이번 포스팅에선 for문에 대해 자세히 공부하도록 하겠습니다.

for문을 자세히 알아보기에 앞서 반복문은 왜 필요할까요?

 

컴퓨터는 인간과 다르게 반복적인 작업을 실수 없이 빠르게 할 수 있습니다.

이것이 컴퓨터의 가장 큰 장점이라고도 할 수 있죠!

동일한 작업을 오류 없이 반복하는 것은 컴퓨터가 아주 잘 할 수 있는 일입니다.

 

반복문이 필요한 이유는 예시를 들어 설명해볼게요!

회사에 중요한 손님이 오셔서 화면에 "환영합니다." 5번 출력해야 한다고 가정해봅시다.

이제까지 학습한 것들만을 이용하면 다음과 같이 print() 함수를 호출하는 문장을 5번 되풀이해야 할 것입니다.

이렇게요! 간단한 print문을 다섯번이나 반복해서 작성해주어야 하네요!

for 반복문을 배운 후 이 코드를 단 2줄로 간단하게 만들어보죠!

 

for문

for문의 구조는 아래와 같습니다.

앞에서 배운 if 조건문처럼 “:”이라는 콜론 기호와 실행할 문장을 쓸 때 들여쓰기를 하는 것은 같네요!

 

근데 첫번째 줄에 위치한 range()는 함수 같은데 이 함수는 어떤 것을 실행하는 함수일까요?

range()함수부터 배우고 넘어가도록 하겠습니다.

 

range()함수는 for문과 함께 자주 사용되는 함수입니다.

이 함수는 입력 받은 숫자에 해당되는 범위의 값을 반복 가능한 객체로 만들어 출력합니다.

조금 더 쉽게 말씀드리면 range() 함수를 이용하면 특정 구간의 정수들을 생성할 수 있습니다.

괄호 안에 시작 숫자와 끝 숫자, 숫자의 거리를 지정해줄 수 있습니다. 예를 들어볼게요!!!!!

위의 예에서도 볼 수 있듯이 끝 숫자는 해당 범위에 포함되지 않습니다.

 

그리고 시작 숫자를 정해주지 않으면 0부터 시작합니다.

 

range함수 안에 하나의 숫자만 쓰면 끝나는 숫자를 설정한 것이고

두 가지 수를 쓰면 시작 숫자와 끝나는 숫자

세 가지를 쓰면 시작 숫자와 끝나는 숫자, 그리고 그 간격을 말하는 겁니다.

 

간격에 대한 숫자를 쓰지 않는다면 1씩 증가하는 것이 default 값입니다.

 

정리해서 보여드리겠습니다. 예를 들어 range(1,10,2)

이렇게 생각하면 됩니다!

 

이제 range함수를 알아보았으니 첫번째 줄에 있는 변수에 대해서 설명하겠습니다.

 

여기선 x라는 변수 이름을 사용하고 있는데 이는 사용자가 임의로 정할 수 있습니다.

변수 이름을 짓는 규칙에 따라 편하게 정하면 된다는 것입니다.

, 이 변수를 미리 선언할 필요가 없습니다.

 

그리고 for와 함께 쌍둥이처럼 등장하는 in이 있습니다.

그 뒤에는 range함수를 써서 범위가 등장하므로

‘in range()’ 하면 그 특정 범위 안에라는 의미가 되겠습니다.

 

for문에는 이 range()함수말고도 (범위에 있는 숫자가 생성되면서 반복되는 횟수를 range()함수로 잡아줬었습니다.

 

리스트를 사용할 수 있는데요!

리스트는 자료형을 다룰 때 자세히 배우겠지만 간단히 말하면

 

숫자, 문자 모음입니다.

 

리스트는 대괄호([])로 감싸주고

이렇게 사용할 수 있습니다.

range()로 범위를 잡아주는 대신

리스트를 이용할 수도 있는데요!

 

예시를 보면 쉽겠죠?

name이라는 변수는 임의로 설정한 것입니다. “철수부터 유신까지 반복한다는 의미이다.

그래도 이해가 잘 가지 않는다면

 

이 그림을 보시죠!

이제 for문과 리스트가 함께 어떻게 동작하는지 감이 오시죠??

 

덧붙여서 문자열 자체도 리스트 역할을 할 수 있습니다.

문자열 하나하나가 리스트 요소처럼 분리되어 for문에서 작동을 합니다.

, 문자열을 대상으로 반복문을 만들 수 있다는 말입니다.

무슨 말이냐고요?

이렇게 시퀀스 안에 문자열을 넣어도 된다는 것입니다!

 

이렇게 문자열에 대해서 알아봤으니

이제 정수 리스트에 대한 반복을 살펴봅시다!

반복문을 사용해 단 두줄만으로 0부터 9까지를 출력해볼까요?

그런데 한 줄에 출력할 순 없을까요?

그럴 때는 end=”” 라는 인수를 넣어주면 됩니다. 같은 코드에 이 인수만 추가한 후 출력해볼게요

정수를 넣은 리스트 말고도

range함수를 통해서도 같은 결과값을 출력할 수 있습니다.

 

숫자들이 너무 붙은 것 같아서 띄어쓰기를 해주고 싶다면 end=” “를 입력하면 됩니다!!

 

이렇게 반복문의 기본 문법을 알아봤으니

이제 응용을 해봅시다!

 

먼저 합을 구하는 프로그램을 만들어봅시다!

1부터 10까지의 합을 구하는 프로그램을 for문을 이용해서 어떻게 구현할 수가 있을까요?

이런 코드로 구현할 수가 있습니다!

100까지의 합을 구하고 싶다면 range함수 안의 숫자만 조정해주면 되겠죠?

 

혹시 더하고 싶은 정수를 사용자가 입력하게 할 순 없을까요?

1부터 사용자가 입력한 수 n까지 더해서 (1+2+3+...+n)을 계산하는 프로그램을 작성하여 봅시다.

이렇게 하면 문제없겠죠?

 

여기서 한 가지만 더 생각해봅시다! 만약에 sum의 초기값을 1로 설정한다면

range 괄호 안의 숫자를 어떻게 수정해야 할까요??

이렇게 하면 됩니다!!

이에 덧붙여 팩토리얼 계산 프로그램을 만들어볼까요?

팩토리얼 n! 1부터 n까지의 정수를 모두 곱한 것을 의미하죠!

, n! = 1×2×3×……×(n-1)×n입니다.

for문을 사용해서 구현해볼까요?

이렇게 하면 팩토리얼을 구하는 프로그램을 작성할 수 있습니다.

 

마지막으로 for문을 이용해 구구단을 출력하는 프로그램을 만들어보고 이 포스팅을 마무리하려고 합니다.

구구단을 출력하는 프로그램을 만들기 위해서는 for문을 두 번, 즉 중첩해서 써야 하는데요

구구단의 원리를 시간을 내어 생각해 보시고

2단부터 9단까지를 코드를 구현해봅시다.

이렇게 for문을 중첩하여 사용하면 구구단 프로그램을 출력할 수 있습니다!

시간을 가지고 생각해보세요!!

 

 

이렇게 해서 반복문 첫 번째 for문에 대해 배워보았습니다!