10. 반복문 알아보기

2020. 6. 7. 22:48Investment Story/금융공학 - 파이썬

반응형

안녕하세요, 자꿈두입니다.

오늘은 반복문에 대해 공부하는 시간을 갖겠습니다.

 

파이썬에서 반복문은

for문과 while문으로 이야기할 수 있습니다. 

반복문이란, 사용자가 지정한 루프에서 반복적으로 연산하게 만드는 문법입니다.

 


for문의 기본구조

먼저 for문에 대해 알아보겠습니다. 

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

 

for 변수 in 시퀀스 데이터 :

     명령문

 

변수는 시퀀스 데이터를 순서대로 반복하며, 

명령문에 있는 연산을 수행한다는 의미입니다.

이 때 시퀀스 데이터는 문자열, 리스트, 튜플, range() 등이 될 수 있습니다. 

근데, 이런식으로 설명하면 이해가 잘안되죠?

 

예제와 함께 알아보겠습니다.

위 연산을 보시죠. 

example이라는 변수에 a, b, c 라는 문자가 들어있습니다. 

그리고 for문을 실행합니다. 

i라는 변수는 example이라는 시퀀스 데이터를 차례로 돌면서 값을 받아오는 for문입니다.

그리고 명령문을 실행합니다. print문이죠. 

즉, i는 example이라는 시퀀스 데이터를 차례로 값을 받아와 출력하라는 이야기입니다. 

순서는 아래와 같이 동작하겠죠.

 

첫 번째 반복 연산 : i = 'a' 이후 print(i)

두 번째 반복 연산 : i = 'b' 이후 print(i)

세 번째 반복 연산 : i = 'c' 이후 print(i) 

 

그 결과는 위에 보시다시피

차례로 

a

b

c

를 출력하는 것입니다.

 

이해가 가시나요?

여기까지 이해하셨으면 for문의 기본적 구조를 이해하신 것입니다.


while문의 기본 구조

while문도 for문과 마찬가지로 반복문입니다. 

구조는 약간 다릅니다. 

 

while 조건 :

        명령문

 

더 단순하죠?

이것도 역시 예를 통해 알아보겠습니다.

example이라는 변수를 0이라고 정의한 후

while문을 통해 반복 연산을 실행하는 예시입니다.

example이 5미만일시 계속 반복을 하는 것이죠. 

 

첫 번째 반복 연산 : example = 0 + 2 이후, print(example)  <<< 연산 이후 example 값은 2

두 번째 반복 연산 : example = 2 + 2 이후, print(example)  <<< 연산 이후 example 값은 4

세 번째 반복 연산 : example = 4 + 2 이후, print(example)  <<< 연산 이후 example 값은 6

네 번째 연산을 하려다 보니 example < 5가 아니므로 반복문 종료.

 

그 결과값은 위와 같이

2

4

6

을 차례로 출력한 채로 끝이 나는 것입니다.

 

쉽죠?

while문을 쓸 때 조심해야 할 것은

무한루프에 빠질 수 있다는 점입니다. 

무한루프란 프로그램이 끝없이 동작하는 것이므로,

연산장치인 CPU를 계속 잡아 먹는 행동이겠죠.

왜인지 볼까요?

만약에 위의 예시를 아래와 같이 쓴다고 해볼까요

 

example = 0

while example < 5:

        print(example)

 

결과값이 어떻게 될까요?

example 변수는 0입니다. 

계속 5보다 작죠. 

그러니 무한으로 example을 출력하는 것입니다. 

꼭 참고해주셔야 하는 부분이겠죠.

 

여기까지 이해하셨으면 while문의 기본구조를 이해하신 것입니다.


continue와 break

반복문에서 많이 쓰이는 continue와 break입니다.

이 둘은 보통 if문과 같이 쓰이는데요

아래와 같이 쓰입니다. 

 

for 변수 in 시퀀스 데이터

     if 조건문 :

        continue

     명령문

 

위에서 for문의 기본 구조는 같죠. 

근데 for문 내부에 조건문과 continue가 있습니다. 

이 말은 조건문 결과가 true이면 뒤에 명령문을 실행하지 말고 다음 시퀀스 데이터로 넘어가라는 것입니다. 

예를 들어보겠습니다.

위 그림은 차가 5대 지나갈 때

스피드센서가 순서대로 값을 캐치해 

값을 speed라는 값에 저장하고 있고,

이를 for문을 통해 과속을 걸러내어

감시자에게 보내는 연산이라고 가정합니다. 

 

첫 번째 연산 : i라는 변수에 76이 대입됩니다. 조건문 결과 값이 참이죠. 80이하 값이니까요, continue 즉, 다음 시퀀스로 이동합니다. print구문을 수행하지 않죠.

두 번째 연산 : i라는 변수에 89가 대입됩니다. 조건문 결과 값이 거짓입니다. print 구문을 수행합니다. 그리고 다음 시퀀스로 이동합니다.

세 번째 연산 : i라는 변수에 80이 대입됩니다. 역시 조건문 결과 참입니다. 다음 시퀀스로 이동합니다.

네 번째 연산 : i 변수에 77 대입됩니다. 조건문 참이죠. 다음 시퀀스로 이동합니다.

다섯 번째 연산 : i 변수에 90 대입됩니다. 조건문 거짓이죠, print구문 수행합니다. 다음 시퀀스가 없으니 반복문 종료됩니다.

 

이해되시나요?

break는 continue와 다릅니다. 

조건문 값이 참이면 반복문을 빠져나오라는 말입니다. 

역시 예시를 들어 봅시다.

비슷한 예시로 들어봅니다.

이번에는 i가 80이 넘으면 

break를 하게 만들었습니다. 

 

첫 번째 연산 : i는 76입니다. break되지 않고 다음 print구문을 수행합니다. 그리고 다음 시퀀스로 이동합니다.

두 번째 연산 : i는 89입니다. 조건문 결과 참이 됩니다. break를 수행하죠 반복문을 빠져나옵니다. 그리고 반복문 다음 연산을 그냥 수행합니다. print구문이죠. 

 

continue는 조건문 결과가 참이면 바로 다음 시퀀스로 넘어가는 제어이고요, 

break는 조건문 결과가 참이면 반복문을 바로 종료하는 제어입니다. 

둘다 많이 쓰이니 알아두셔야 합니다. 

while문에서도 마찬가지로 적용이 됩니다. 


range() 함수 알아보기

range함수는 숫자로 이루어진 데이터를 만드는 함수입니다. 

반복문과 함께 많이 쓰이니 알아보는 시간을 갖겠습니다.

range()함수의 기본구조는 아래와 같습니다.

 

range(i) : 0부터 i-1의 리스트를 1의 간격으로 생성하라

range(i,j) : i부터 j-1까지의 리스트를 1의 간격으로 생성하라

range(i,j,k) : i부터 j-1까지의 리스트를 k의 간격으로 생성하라

 

예시를 통해 또 알아보죠.

위 그림은 가장 첫번째 range(i)의 예시이죠.

range(5)를 하면

0부터 4의 리스트가 1의 간격으로 생성되겠죠.

즉 [0, 1, 2, 3, 4] 값이 생성되는 것입니다. 

이를 반복문으로 print를 하라 했으니

결과가 

0

1

2

3

4

출력이 생성되는 것이죠.

그 다음 예시는 range(i,j)입니다.

range(3,5)는

3부터 4의 리스트가 1의 간격으로 생성되는 함수이니

[3, 4] 값이 생성이 되죠. 결과는 위와 같을 것입니다.

마지막으로 range(i,j,k) 예시입니다. 

range(0,10,3)은

0부터 9까지 3의 간격으로 값이 생성됩니다. 

[0, 3, 6, 9]가 생성되니 위와 같은 결과가 나옵니다.


이상 반복문을 알아보는 시간이었습니다. 

도움이 되는 포스팅이었으면 좋겠습니다. 

 

감사합니다.

반응형

'Investment Story > 금융공학 - 파이썬' 카테고리의 다른 글

12. 튜플 알아보기  (1) 2020.06.10
11. 리스트 알아보기  (0) 2020.06.09
9. 조건문 알아보기  (4) 2020.05.13
8. 문자열 알아보기  (0) 2020.05.11
7. 파이썬의 연산자 알아보기  (4) 2020.05.08