ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 파이썬 프로그래밍(python) 4 - 조건문, 반복문과 할당연산자(if, elif, else, for, while, break, continue, range)
    데이터분석/파이썬 2021. 11. 14. 10:32
    반응형

    https://kbkb456.tistory.com/66

     

    데이터 분석을 위한 파이썬(3) - 변수값의 형태 -2(리스트, 튜플, 딕셔너리, boolean, set)

    https://kbkb456.tistory.com/63 데이터 분석을 위한 파이썬(2) - 변수값의 형태 - 1(숫자형과 문자열) 파이썬의 변수를 다룸에 있어서 변수값의 형태는 매우 중요합니다. 이런 형태를 잘 이해하고 다루는

    kbkb456.tistory.com

    저번 시간까지 변수 선언과 변수 타입에 대해서 알아봤습니다.

    오늘부터 소개드릴 것은 파이썬을 함에 있어서 정말 정말 편하게 만들어주는 조건문과 반복문입니다.

     

    간단한 게 조건문과 반복문을 설명하자면 이렇습니다.

     

    - 조건문: 조건에 맞게 코드를 실행시켜주는 코드 블록

    - 반복문: 원하는 수만큼 코드를 반복시켜주는 코드 블록

     

    이것을 통해서 특정 조건에 따라 코드의 흐름을 제어할 수 있습니다. 이를 프로그래밍에서 흐름 제어(flow control)라고 합니다. 사람이 일일이 코드를 반복하거나 조건이 달라서 코드를 재생산하는 행위를 막아줍니다.

     

    1. 조건문(if, elif, else)

     

    - 1가지 조건

    1가지 조건의 if문법은 이렇습니다.

    if 조건:
      조건이 참인 경우 출력
    else:
      거짓인 경우 출력

    원하는 조건을 if에 넣고 나머지는 else로 처리해주시면 됩니다.

     

    만약 어떤 숫자가 3000 초과인 경우 "yes"를 아닌 경우는 "no"를 출력하는 if문을 작성한다고 생각해봅시다.

     

    여기서 조건을 정리해봅시다.

    - 조건: 어떤 숫자가 3000 초과인 경우 "yes"

    - 나머지: "no"

     

    해당 조건에서는 이런 식으로 코딩할 수 있을 것입니다.

    a = 2900
    
    if a > 3000:
      print("yes")
    else:
      print("no")

     

    여기서는 a를 2900으로 선언했으니 3000보다 작기 때문에 "no"를 출력할 것입니다.

     

     

    - n가지 조건

    그렇다면 조건이 여러 가지면 어떻게 될까요??

    바로 elif를 이용해서 해결할 수 있습니다.

    if 조건1:
      조건1이 참인 경우 출력
    elif 조건2:
      조건2이 참인 경우 출력
    else:
      거짓인 경우 출력

    만약 어떤 숫자가 3500 초과인 경우 "oh"를 3000 초과인 경우 "yes"를 아닌 경우는 "no"를 출력하는 if문을 작성한다고 생각해봅시다.

     

     

    조건을 정리해봅시다.

    - 조건 1: 어떤 숫자가 3500 초과인 경우 "oh"

    - 조건 2: 3000 초과인 경우 "yes"

    - 나머지: no

     

    해당 조건에서는 이런 식으로 코딩할 수 있을 것입니다.

    a = 3600
    
    if a > 3500:
      print("oh!")
    elif a > 3000:
      print("yes")
    else:
      print("no")

    여기서는 a를 3600으로 선언했으니 3500보다 크기 때문에  "oh"를 출력할 것입니다.

    이런 식으로 elif를 이용하여 조건을 계속 여러 개로 늘려 나갈 수 있습니다.

     

    match라는 조건문도 있지만 이건 함수와 연계하여 활용하는 게 활용성이 좋으므로 함수를 설명할 때 같이 설명하도록 하겠습니다.

     

    2. 반복문(while, for)과 할당 연산자

    - 조건이 맞을 때까지 실행시켜보자 -> while

    - 원하는 수만큼만 실행시키고 싶다 -> for

     

    사실 for문을 쓴다고 해서 while 역할을 못하는 것은 아닙니다. 그래도 그냥 편의성을 위해서 나눠 봤습니다.

    그리고 반복문을 활용할 때는 할당 연산자를 활용하면 편합니다.

     

    - 할당연산자 종류

    문법 역할 예시
    = 왼쪽 변수에 오른쪽 값을 할당 a = b
    += 왼쪽 변수에 오른쪽 값을 더하고 결과를 왼쪽변수에 할당 a += 1 (a = a+1 이거와 같음)
    -= 왼쪽 변수에서 오른쪽 값을 빼고 결과를 왼쪽변수에 할당 a -= 1 (a = a-1 이거와 같음)
    *= 왼쪽 변수에 오른쪽 값을 곱하고 결과를 왼쪽변수에 할당 a *= 2 (a = a*2 이거와 같음)
    /= 왼쪽 변수에서 오른쪽 값을 나누고 결과를 왼쪽변수에 할당 a /= 2 (a = a/2 이거와 같음) 
    %= 왼쪽 변수에서 오른쪽 값을 나눈 나머지의 결과를 왼쪽변수에 할당 a %= 3 (a = a%3 이거와 같음)
    **= 왼쪽 변수에 오른쪽 값만큼 제곱을 하고 결과를 왼쪽변수에 할당 a **=2 (a = a**2 이거와 같음)
    //= 왼쪽 변수에서 오른쪽 값을 나눈 몫의 결과를 왼쪽변수에 할당 a //=2 (a = a//2 이거와 같음)

    할당연산자를 활용하게 되면 반복문을 활용 시에 편하게 코딩할 수 있습니다.

     

    - while 문

     

    조건이 맞을 때까지 무한정으로 실행하는 반복문을 while이라고 합니다. 문법은 이렇습니다.

    while 조건:
      실행(조건이 참이 될 때까지 실행)

     

    x에 대해서 15 미만일 때 그 값을 출력하고 해당 값에 +1을 해주는 코드를 만든다고 생각해봅시다.

     

    여기서 코드를 정리해보면

    - 조건: x에 대해서 15 미만일 때

    - 실행코드: 그 값을 출력하고 해당 값에 +1

     

    해당 코드는 이런 식으로 코딩이 가능할 것입니다.

    x = 0
    
    #조건
    while x < 15:
      #실행 코드
      print(x)
      x += 1

    실행결과

    while문의 실행결과

    x가 14일 때까지 출력하고 15가 되었을 때 출력을 멈춘 것을 알 수 있습니다.

     

    break와 continue

    반복문에서는 break와 continue를 통해서 좀 더 나이스 한 제어가 가능합니다.

     

    - break: 조건에 맞으면 코드를 그 선에서 멈춤

     

    만약 위의 예시에서  x가 5를 초과하면 코드를 멈추겠다. 조건을 추가하고 싶다고 생각해봅시다.

    물론 15를 6으로 바꾸는 방법도 있겠지만 break를 활용하는 방법이 있을 것입니다.

     

    여기서 코드를 정리해보면

    - 조건: x에 대해서 15 미만일 때

    + break 조건: x가 5를 초과할 때

    - 실행코드: 그 값을 출력하고 해당 값에 +1

     

    이렇다면 아래의 방법처럼 코딩이 가능할 것입니다.

    x = 0
    while x < 15:
      if x > 5:
        break
      print(x)
      x += 1

    실행 결과

    5초과 조건을 걸어서 5까지만 출력이 되었다.

     

    - continue: 조건에 맞으면 해당 코드를 스킵하고 다음 반복으로 넘어감

     

    만약 위의 예시에서 홀수만 출력하겠다고 말을 한다면 결국 15 미만까지(끝까지) 반복문이 돌지만 홀수만 출력을 해야만 할 것입니다. 이럴 때 활용하는 것이 continue입니다.

     

    여기서 코드를 정리해보면

    - 조건: x에 대해서 15 미만일 때

    + continue 조건: 홀수일 때

    - 실행코드: 그 값을 출력하고 해당 값에 +1

     

    이렇다면 아래의 방법처럼 코딩이 가능할 것입니다.

    x = 0
    while x < 15:
      x = x + 1
      if x % 2 == 0:
        continue
      print(x)

    아래 코드의 뜻은 x를 2로 나눴을 때 몫이 0인 경우 즉 짝수인 경우 continue(스킵) 하겠다는 코드입니다.

    if x % 2 == 0:
      continue

     

    실행결과

    홀수만 출력되고 있다.

    - for 문

    원하는 수만큼만 실행시키고 싶을 때 활용하는 for문에 대해서 알아보도록 하겠습니다.

     

    기본 문법

    for 할당변수 in 반복횟수 혹은 실행할 리스트:
      실행문

    반복 횟수 혹은 실행할 리스트: 해당 반복을 몇 번 할지 혹은 끝까지 반복할 리스트에 를 넣습니다.


    할당 변수

    - 반복 횟수를 넣어주면 0부터 +1로 순차적으로 증가하며

    - 리스트를 넣어주는 경우 인덱스가 0인 것부터 할당 변수에 들어가게 됩니다.

    ex) [1,2,3,4,5] 리스트를 넣어주는 경우 할당 변수에 1부터 순차적으로 들어감

     

    range를 활용한 for 문

    반복문에서 반복 횟수는 range를 통해서 표현합니다.

     

    range(끝 숫자): 하나의 숫자만 넣을 경우 끝수자로 인식해서 0부터 (끝 숫자 -1)까지 나열해줍니다.

    ex) range(10) = 0,1,2,3,4,5,6,7,8,9

    for i in range(10):
      print(i)

    for문 실행결과

    range(시작 숫자, 끝 숫자): 시작 숫자부터 (끝 숫자 -1)까지 나열해줍니다.

    ex) range(1,10) = 1,2,3,4,5,6,7,8,9

    for i in range(1,5):
      print(i)

    for문 실행결과 2

     

    range(1,5)가 실행 횟수라고 보면 되고 i가 할당 변수라고 보면 됩니다.

    반복해서 i에 1~5까지 할당하여 차례차례 print 해주는 반복문입니다.

     

    리스트를 이용한 for 문

    리스트를 반복문에 넣게 되면 할당 변수에 리스트의 인덱스 0 값부터 차례차례 들어가게 됩니다.

    item_list = [1,2,3,4,5]
    for item in item_list:
      print(item)

    여기서 리스트는 item_list이고 for문의 item은 item_list에 인덱스[0]부터 [4]까지 반복해서 출력해주게 되는 겁니다.

    for문 실행결과3

     

    if문과 섞어서 이런 식으로도 활용이 가능합니다. 만약 내가 리스트 안에 3,4만 출력하고 싶다고 한다면 이런 식으로 가능할 것입니다.

    for item in item_list:
      if item in [3,4]:
        print(item)

    for문 실행결과4

    딕셔너리를 이용한 for문

    딕셔너리도 for문을 활용할 수 있습니다.

    dic_list = {'a' : 0.40, 'b' : 0.35, 'c': 0.25}

    이런 딕셔너리가 있다고 가정해볼때 key와 value를 순차적으로 뽑아내고 싶다고 한다면 아래와 같이 하면 됩니다.

    #.items()로 key,value값 반환
    #key = k , value = v
    
    for key,value in dic_list.items():
        print(key,value)
        
    for k,v in dic_list.items():
        print(k,v)

    딕셔너리. items()로 key, value값 반환하고 각각의 값을 뽑아 올 수 있습니다.

     

    실행결과

    딕셔너리 key value 뽑아오기

     

    그리고 편리하게 연산하는 것도 가능합니다.

     

    - 모든 벨류에 2곱하기

    for k, v in dic_list.items():		
      dic_list[k] = v*2
    print(dic_list)

    실행결과

    딕셔너리 for문 실행결과

    - key를 a로 가지고 있는 값을 3으로 변환

    #a 키를 가지고 있는 벨류를 3으로 변환
    for key in list(dic_list.keys()):
        if key == 'a':
            dic_list[key] = 3
    print(dic_list)

    실행결과

    딕셔너리 for문 실행결과2

    - key를 a로 가지고 있는 값을 삭제

    #a 키값을 가지고 있는 것을 삭제
    for key in list(dic_list.keys()):
        if key == 'a':
            del dic_list[key]
    print(dic_list)

    실행결과

    딕셔너리 for문 실행결과3

     

    오늘은 파이썬에서 필요한 흐름을 제어하는 법에 대해서 알아봤습니다. 이것만 잘 사용해도 여러 문제를 해결함에 있어서 큰 도움이 되니 연습이 많이 필요합니다.

     

    https://colab.research.google.com/drive/173FdHs_NNWEm9c4vbAzkbtTsUPSeMPY1?usp=sharing 

     

    파이썬 포스팅코드.ipynb

    Colaboratory notebook

    colab.research.google.com

     

    반응형

    댓글

Designed by Tistory.