저번에 While, break, continue문에 대해서 간단하게 알아 보았고, 이번에는 for문에 대해서 알아 봅시다. 같은 반복문이지만 앞에 언급했다시피, for문은 반복횟수가 확실히 정해져 있을 때 쉽게 사용할 수 있습니다. 알고리즘 자체가 쉽기 때문입니다. 

for문은 기본적으로 iterable 리스트에 for 시작변수 in [리스트] 와 같은 형식으로 사용 할 수 있습니다. 또는 range(0,n)은 iterable변수를 0....n까지 생성 할 수 있으므로, 리스트 대신에 사용 할 수 있습니다. 즉, in 뒤에는 iterable값이면 아무 거나 들어 갈 수 있다는 것입니다. 다른 언어보다 직관적이고 확실히 편리합니다. 

for문의 사용 방법은 다음과 같습니다. 

1. For 문


list_a = ['1','kim','jamwon','seoul','phone'] for h in list_a: list_a list_a

['1', 'kim', 'jamwon', 'seoul', 'phone']


for i in range(0,10):   
    a = pow(i,2)
    print(i,a)  

0 0 1 1 2 4 3 9 4 16 5 25 6 36 7 49 8 64 9 81


list의 값을 순차적으로 꺼내거나, 값을 생성하여, 이에 대해 index를 부여한 다음, 차례대로 꺼내는 것도 가능합니다. 즉, list든 변수든, iterable한 객체이면 for문에서 사용하는 데 문제는 없다는 얘기입니다. 이것만 지키면 상관없습니다.


Continue문을 좀 살펴 보겠습니다.


for j in range(0,10):
    if j%2==0:
        continue
    print("%d" %j)

1 3 5 7 9

10까지의 값을 하나씩 프린트 하는데, 2로 나눈 나머지 값이 0이 되는 것 (j%2==0)에서는 순차적으로 내려가서 프린트하지 않고 제어를 다시 for문으로 돌려 버립니다. 그러니까 출력되지 않겠죠? 이렇게 Continue문은 For문과도 함께 사용될 수 있다는 것을 알아 둡시다. 

for문에서 가장 먼저 배우는 별찍기는 생각보다 파이썬에는 상당히 쉽습니다. line by line이 자동으로 변하기 때문입니다. 

for c in range(0,11):
    print("*"*c)


*
**
***
****
*****
******
*******
********
*********
**********

C 언어와 같은 경우에는 중복 For문을 사용하고 막 별짓을 다 해야 해서 처음 접하는 사람에게는 좀 어려웠는데 파이썬은 딱 직관적으로 느껴지네요. 첫 line에서 하나를, 두 번째 line에서 2번을, 곱하기로 하는 거니 아시겠죠? 정말 직관적이고 쉽습니다.

1. For 

2. 중복 For 문


하지만 이 별을 여러 번 찍어 준다. 하면 좀 다릅니다. 먼저, 중복 for문의 개념에 대해서 알아 보면


for i in range(0,n):

...

for j in range(0,m):

...

처럼 코드가 있으면,

j 및의 코드를 m번 까지 모두 반복한 다음에, 바깥 for문을 한 번 처리 하고 최대 n번 반복하는 것입니다. 이것은 for문이 3개, 4개 있어도 동일하게 적용됩니다.


*
**
***
****
*****
******
*******
********
*********
**********



*
**
***
****
*****
******
*******
********
*********
**********



*
**
***
****
*****
******
*******
********
*********
**********


그러면 중복 for문의 개념을 적용해서 위와 같이 한 번 별을 찍어 주고, 띄어 쓰기 해주고, 한 번 별을 찍어주고, 띄어쓰기 해주고, 이런 식으로 출력해 주고 싶습니다. 어떻게 해야 할까요?


for b in range(0,11):
    print("\n")
    for b in range(0,11):
        print("*"*b)

위와 같이 써주면 됩니다. 참 쉽죠? 

띄어쓰기 라인에 첫번째 For문을 넣어주고, 그 안에, 반복되는 라인에, *을 찍어주는 For문을 넣어주시면 됩니다.  그러면 *을 모두 찍어준 다음에, 한 번 띄어쓰기 해주고, 다시 *를 찍어주고, 다시 띄어쓰기 하고.....를 반복하고 프로그램을 종료하게 됩니다. 

마지막으로 중복 For문의 개념을 알아 보기 위해서 구구단을 출력하는 간단한 프로그램을 살펴보면

for k in range(1,10):
    for l in range(1,10):
        print("%d*%d" %(k,l))   
    if l==9:
        print("=============================================")

1*1 1*2 1*3 1*4 1*5 1*6 1*7 1*8 1*9 ============================================= 2*1 2*2 2*3 2*4 2*5 2*6 2*7 2*8 2*9 =============================================

다음과 같이 출력하면 됩니다. 1단을 먼저 출력하기 위해서 %d (앞에 for문) * %d (뒤에 for문)를 하는데 뒤에 for문은 처음에 9까지 반복이 됩니다. 그리고 9까지 반복이 ㅐ되면 1단인지 2단인지 구분하기 위해서 "======================"가 출력이 되고, 다음 줄로 넘어갑니다.  

중복  For문이 처음에 헷갈 릴 수도 있겠지만 여러번 보시다보면 금방 익숙해 지실 겁니다. 또 파이썬은 간단히 직관적으로 써놨기 때문에 금방 익숙해 지시겠죠. 그럼 다음엔 함수로 찾아오도록 하겠습니다. (__)


'머신러닝 > 기초 문법' 카테고리의 다른 글

가상환경 만들고 삭제하기  (0) 2019.02.14
9. 함수  (0) 2019.02.12
7. While. Break, Continue  (0) 2019.02.10
6. IF 문  (0) 2019.02.09
주피터 노트북 블로그에 맞기 정렬하기  (0) 2019.02.08

저번에는 기본적인 제어문인 IF문에 대해서 알아 보았습니다. IF문은 A하면 B한다라는 언어인 반면, 반복문은 A라는 조건을 만족하면, B를 계속 실행한다. 입니다. 반복문에는 큰 틀에서 While문과 For문 두 가지가 있습니다. 두 구문의 차이를 구별하면 For문은 반복 횟수를 정확히 알 경우에 사용하고, While문은 반복 횟수를 정확히 모를 때 사용합니다.

 그리고 사실 While문은 반보문으로, 여러구문을 처리해주는 역할을 담당하긴 하지만, 이 구문 자체만으로는 그다지 큰 쓸모가 없습니다. 나중에 학습할 For문이 개인적으로 더 간략하고, 사용하기 쉽기 때문이죠. 그 보다는 Break, Continue문과 함꼐 쓰입니다.

 

말로 하는 것 보다는 실제 코드를 보면서 하는 편이 나을 것 같습니다. 먼저 가장 간단한 While문의 구조부터 보겠습니다.

 

1. While
import numpy as np
:
A = 0
i = 0

 

while A < 10:
    A = A+1
    print("%d" %A)
A

 

1 2 3 4 5 6 7 8 9 10

while 조건:

코드

기본적인 구조는 매우 간단합니다. 정수 A 0이 10이 될 때까지 하나 씩 더해가면서, 형식 지정자를 정수(%d)로 해서 출력하면 위와 같은 결과가 나옵니다.

2. While + Break

Break문은 반복문에서만 사용 할 수 있는 구문으로, 반복문을 중단하고 프로그램의 프로세스를 일종의 Main 구문으로 빠져나가게 하는 구문입니다. 프로그램이 짧은 경우에는 상관이 별로 없지만, 프로그램이 길어지는 경우에, 특정 경우 특정 반복문을 실행하고, 아닌 경우 빠져나와야 할 경우에 자주 사용 됩니다. 다음의 예시를 살펴 보겠습니다.

while A<10: in_text = input("-m: 숫자세기, -q:종료") if in_text == "-q": break elif in_text =="-m": A = A+1 A

 

 

-m: 숫자세기 -q:종료 m

-m: 숫자세기 -q:종료 q

이 코드를 한 번에 이해하셨다면 이 포스팅을 보실 이유도 별로 없으시겠지만, 일단 line by line으로 좀 해석을 하면, 아직 설명하지 않았지만 input이라는 변수에 사용자가 문자나 숫자를 입력을 할 수 있습니다. 그래서 이것을 in_text라는 변수에 집어 넣었는데, 이것이 만약에 -q이면 break 구문을 써서 반복문을 빠져나가서 A를 출력합니다. 그러면 A에 아무것도 들어 있지 않으므로 당연히 아무것도 출력되지 않을 것입니다. 반면에 -m을 집어 넣으면 A에 +1 을 하도록 설정합니다.

 

Code가 조금 복잡해지긴 했지만, 맨 처음의 코드보다 훨씬 쓸모가 많을 것 같습니다. 처음의 코드도 응용 여부에 따라 쓸모는 많겠죠. 제가 못 찾은 것일 지도-_-

 

 

3. Continue

 

]:
while A < 10:
    A += 1
    if A == 5:
        continue
    print(A)
1
2
3
4
6
7
8
9
10

 

Continue문은 특정 값일 때 제어를 반복문의 바깥으로 돌려주지 않고 반복문의 맨 처음으로 옮겨 줍니다. 나중에 for문에서도 같이 알아 볼 테니 간단하게만 코딩하고 가도록 하겠습니다. 지금까지 코딩하면서 사실 많이 사용하진 않았으니까요. 머리가 나쁘면 몸이 고생한다고 그냥 노가다(?)로 해결이 가능한 부분인 것 같기도 합니다. -_-

 

 

 

 

'머신러닝 > 기초 문법' 카테고리의 다른 글

9. 함수  (0) 2019.02.12
8. FOR문  (0) 2019.02.11
6. IF 문  (0) 2019.02.09
주피터 노트북 블로그에 맞기 정렬하기  (0) 2019.02.08
넘파이 기초 - 배열 생성(1)  (0) 2019.01.31

+ Recent posts