본문 바로가기
Python/파이썬 기초

흐름 제어(if) 및 반복(for, while) 구문 - 파이썬 기초(17)

by 콩돌 2018. 12. 23.
반응형

참고 자료

https://docs.python.org/ko/3/tutorial/controlflow.html

https://docs.python.org/ko/3/reference/compound_stmts.html



파이썬 버전 3.7 기준



파이썬의 흐름제어 및 반복 구문


본 포스팅에서 다루는 구문은 다음과 같다.

if문, while문, for문 등.


각 구문의 공통 문법

  ○ 구문의 끝(예를들어 조건문 뒤)에는 콜론(:)을 붙여주어야 한다.

  ○ 구문에서 내용에 해당되는 부분은 같은 길이의 들여쓰기나 탭으로 구문 안에 있다는 것을 명시한다.

    ▷ PEP8에서는 들여쓰기에 스페이스 4개를 사용을 권장한다.


흐름제어 구문


if 구문 (elif 및 else 포함)


구문 형식)

if 조건문1: 

    내용


elif 조건문2:

    내용


elif 조건문3:

    내용     

....


else:

    내용


  ○ if 및 elif 구문에서는 조건문이 참(True)일 경우 내용이 실행된다. 

  ○ elif 구문은 다른 언어에선 else if 이며, 위쪽 if 구문이 거짓(False)일 경우 조건문을 점검하여 참(True)인 경우 구문 내부 내용을 실행한다.

    ▷ elif 구문은 여러 개가 사용될 수 있다.

  ○ else 구문은 모든 위의 if 구문 및 elif 구문의 조건문이 맞지 않을 경우 실행한다.

    ▷ else 구문은 모든 조건문이 맞지 않을때 else 구문 내용을 실행하므로 가장 아래쪽에 위치시켜야 한다.

  ○ 당연한 얘기지만 elif문 및 else문은 필요에 따라서 사용하거나 사용하지 않을 수 있다.

    ▷ 하지만 사용할 경우 if 구문 아래에 사용하여야하며 else 구문은 가장 아래 사용하여야 한다.



반복 구문


while 구문


구문 형식)

while 조건문: 

    내용


  ○ while구문은 조건문이 참인 경우 내용을 실행하며, 거짓이 될 때까지 계속해서 내용을 반복 실행한다.

    ▷ 조건문에 True 혹은 1을 입력할 경우 무한루프에 빠트리는 것이 가능하다.

    ▷ 내용에 조건문을 거짓(False)으로 만들 수 있는 조치를 하지 않는 경우 역시 무한루프에 빠질 수 있다.


사용 예)

In[7]: i = 0

In[8]: while i<5:

    ...:     print('interation: ', i)

    ...:     i += 1

    ...:

interation:  0

interation:  1

interation:  2

interation:  3

interation:  4



for 구문


구문 형식)

for 변수 in 이터레이블(iterable): 

    내용


  ○ 이터레이블에 있는 요소를 하나씩 꺼내어 변수로 대입한 후 내용을 수행하며, 모든 이터레이블 요소를 소진하기까지 이를 반복한다.

    ▷ 내용에 변수를 유용하게 사용할 수 있으나 굳이 사용하지 않아도 된다.

  ○ while 구문과는 다르게 이터레이블의 수는 (아마도) 유한하기 때문에 무한루프에 빠지기는 어렵다.

  ○ for 구문은 이터레이블 자리에 리스트나 튜플, range(), enumerate() 등을 많이 사용한다.

    ▷ 리스트나 튜플의 요소를 그대로 변수를 사용하고 싶은 경우는 리스트나 튜플 등을 그대로 넣으면 된다.

    ▷ 변수에 굉장히 단순한 숫자 배열만 필요한 경우는 range()를 이용하는 것이 좋다.

    ▷ 리스트나 튜플 요소와 그 인덱스를 동시에 사용하고 싶은 경우 enumerate()를 사용하면 된다. 


※ 이터레이블(iterable)?

  ○ 먼저 쉽게 설명하면 리스트와 튜플과 같은 시퀀스형 자료형 대부분은 이터레이블하다.

  ○ 이터레이블에 대한 자세한 설명은 여기를 참고한다.


사용 예)

In[3]: a = ['a', 'b', 'c', 'd']


# 리스트 사용 예

In[4]: for element in a:

    ...:     print('Element: ', element)

    ...: 

Element:  a

Element:  b

Element:  c

Element:  d


# range 사용 예
In[5]: for num in range(5):
    ...:     print('Range: ', num)
    ...: 
Range:  0
Range:  1
Range:  2
Range:  3
Range:  4

# enumerate 사용 예

In[6]: for num, element in enumerate(a):

    ...:     print('Index: ', num,',', ' Element: ', element)

    ...: 

Index:  0 ,  Element:  a

Index:  1 ,  Element:  b

Index:  2 ,  Element:  c

Index:  3 ,  Element:  d


반응형

댓글