본문 바로가기
자기개발

Python (파이썬) 독학하기 _ #4. 제어구조(Control Structure)

by benjamin-L 2022. 9. 4.
728x90
반응형

대부분의 프로그램 언어들이 제어 구조를 가지고 있습니다. 파이썬도 마찬가지 구조를 가지고 있고, 문법 형식도 유사한 구조입니다. 오늘은 제어구조에 대해서 알아보겠습니다.

파이썬 제어구조 모식도

조건문  :  if  문

기본 if 문법

1) if 조건문은 if 에 조건식을 지정하고  : (콜론)을 붙인다.

2) 다음줄에 실행하라 코드를 작성한다. 조건식이 만족할 때 실행할 코드를 if 본문이라고 한다.

3) 이때 실행할 코드는 반드시 들여쓰기를 해야 한다.

 

ex)    if  x == 10 :

         (들여쓰기 4칸) print ( '10입니다.' )   # 조건식이 만족할때 실행할 코드

 

4) x in s,  x not in s

    -  s는 리스트, 튜플, 문자열 등이 될수 있다.

    -  in 연산자 :  x가 s의 원소이면 True를 리턴한다.

    -  not in 연산자 :  in 연산자와 반대이다.

 

ex)  1 in [1,2,3]

       True       # 1 은 [1,2,3] 리스트에 속하므로 True 리턴한다.

       1 not in [1,2,3]

       False     # 1 은 [1,2,3] 리스트에 속하므로 False 리턴한다.

 

if else 문법

1) if 에  else 를 사용하면 조건식이 만족할 때와 만족하지 않을 때 각각 다른 코드를 실행할 수 있다.

2) else 사용하기

  -  else는 if 조건문 뒤에 오며 단독으로 사용할 수 없다.

  -  if 와 마찬가지로 else도  : (콜론)을 붙이며 다음줄에 실행할 코드가 온다.

  -  조건식이 참(True)이면 if 의 코드(if 본문)가 실행되고, 거짓(False)이면 else의 코드(else 본문)가 실행된다.

 

ex)  if  x == 10 :

      (들여쓰기 4칸) print ( '10입니다.' )   # 조건식이 만족할 때 실행할 코드

      else :

      (들여쓰기 4칸) print ( '10이 아닙니다.' )   # 조건식이 만족하지 않을 때 실행할 코드

 

if elif 문법

1) elif 는 조건식을 여러개 지정하여 각 조건마다 다른 코드를 실행할 수 있다.

2) elif 문

  -  조건이 여러 개일 경우 사용한다.

  -  조건은 처음 선언한 조건부터 순서대로 체크하여 True 인 코드블록을 실행하고 빠져나온다.

  -  마지막에 else 가 올 수 있다.

 

ex)   if  조건 1 :

        ----명령문 1-1      # 명령문 앞에 띄어쓰기 4칸 반드시 필요

        ----명령문 1-2

        elif  조건 2 :

        ----명령문 2-1

        ----명령문 2-2

        elif  조건3 :

        ----명령문 3-1

        ----명령문 3-2

        else :                   # else는 맨 마지막에 와야 한다. elif 앞에 else가 오면 잘못된 문법이다.

        ----명령문 4

 

반복문  :  while 문,  for  문

while 문법

1) while  :  조건이 True인 동안 구문을 반복한다.

   -  조건식  => 반복할 코드 및 변화식  =>  조건식으로 순환하는 부분이 루프(loop)

   -  while문의 기본 구조

 

ex)  i = 0

       while  i < 100 :

       ----print ( "Hello, world!" )

       ----i +=1                              # 변화식  (반복할 코드)

 

먼저 초기식부터 시작하여 조건식을 판별한다. 이때 조건식이 참(True)이면 반복할 코드와 변화식을 함께 수행한다. 그리고 다시 조건식을 판별하여 참(True)이면 코드를 계속 반복하고, 거짓(False)이면 반복문을 끝낸다.

while문 순서도

for 문법

1) for 문은 Iterable 타입의 객체가 가지고 있는 값들을 순회하며 조회할 때 사용

  -  Iterable 객체는 여러 개의 값들로 구성되어 있으며 반복 조회가 가능한 타입을 통칭한다. 리스트, 튜플 등이 있다.

  -  for 선언 후 :(콜론)  으로 선언부와 구현부를 나눈다.

  -  변수는 반복할 때 조회되는 원소를 반복구문에서 사용하도록 저장하는 임시 변수 이다.

  -  Iterable 안의 모든 값들을 다 조회하면 반복구문은 멈춘다.

  -  반복구문은 공백 4개 또는 tab을 입력 후 작성한다.

  -  반복구문이 끝나면 공백없이 코드를 작성하면 된다.

2) for 문의 기본 구조

 

ex)   for 변수 in Iterable :

        ----반복구문

        ----반복구문

for문 순서도

 

for문과 range() 함수

1) range() 함수 -  연속된 정수들을 만들때 사용한다.

2) 구문  :   range ( [시작값], 멈춤값, [증감값] )

   -  시작 값 보다는 크거나 같고 멈춤 값 보다는 작은 값을

   -  증감 값 만큼 증감한 연속된 정수들을 만든다.

   -  시작 값 생략 시  0 이 기본값

   -  증감 값 생략 시  1 이 기본값

 

ex)   range (1, 20, 5)  =>  [ 1, 6, 11, 16 ]

        range (1, 5)        =>  [ 1, 2, 3, 4 ]

        range (7)            =>  [ 0, 1, 2, 3, 4, 5, 6 ]

 

ex) for i in range(100) :

      ----print( 'Hello, world!' , i )

# 실행결과

    Hello, world! 0

    Hello, world! 1

    Hello, world! 2

           .......

    Hello, world! 98

    Hello, world! 99

 

for문과 enumerate() 함수

1) enumerate() 함수

   -  반복 조회 시 현재 원소의 index와 원소를 튜플로 묶어서 반환한다.

   -  보통 enumerate 함수는 다음 예제 처럼 for 문과 함께 자주 사용한다.

   -  전달인자

      . start :  시작할 index 값을 지정한다.  기본값은 0

      . enumerate(strs, start = 1) :  1부터 시작한다.

 

ex)  strs = [ 'A', 'B', 'C' ]

       for idx, str in enumerate(strs) :

       ----print(idx, str)

# 실행결과

   0  'A'

   1  'B'

   2  'C'

 

for문과 zip()함수

1) zip() 함수

   -  여러 개의 자료 구조 객체를 받아 같은 index의 값끼리 튜플로 묶어 준다.

   -  묶은 자료구조 객체의 개수는 상관없다.

   -  각 자료구조 객체의 크기가 다를 경우 작은 것의 개수에 맞춘다.

 

ex)  a = [1, 2, 3]

       b = [10, 20, 30]

       for z in zip(a, b) :

       ----print(z)

# 실행결과

    (1, 10)

    (2, 20)

    (3, 30)

 

continue,  break 반복문 제어

1) continue :  나머지 부분을 실행하기 않고 다음 반복을 시작한다.

2) break :  반복문을 멈춘다.

 

ex)  for num in range(1, 20) :

       ----if(num %5 !=0) :

       --------continue

       ----print(num)

       print( "for 문 종료" )

# 실행결과

    5

   10

   15

    for 문 종료

 

ex) for num in range(1, 20) :

      ----if(num %5 !=0) :

      --------break

      ----print(num)

      print( "for 문 종료" )

 

Comprehension

1) 기존 자료 구조를 이용해 새로운 자료 구조를 만드는 구문

   -  리스트 컴프리헨션 / 딕셔너리 컴프리헨션 / 집합(set) 컴프리헨션 / 튜플은 지원하지 않는다.

문법 Examples
[출력표현식 for 요소 in 입력Sequence [ if 조건식 ]] oldlist = [ 1, 2, 'A', False, 3 ]
newlist = [ i*i for i in oldlist if type(i) == int ]
print(newlist)

# 실행결과   =>   [ 1, 4, 9 ]
{ key:value for 요소 in 입력Sequence [ if 조건식 ]} id_name = {1 : '박진수', 2: '강만진', 3: '홍수정'}
name_id = {val:key for key, val in id_name.items()}
print(name_id)

# 실행결과   =>  { '박진수' : 1, '강만진' : 2, '홍수정' : 3 }
{출력표현식 for 요소 in 입력Sequence [ if 조건식 ]} oldlist = [ 1, 1, 2, 3, 3, 4 ]
newlist = { i*i for i in oldlist }
print(newlist)

# 실행결과   =>  { 16, 1, 9, 4 }

 

728x90
반응형

댓글