ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 처음 시작하는 파이썬 강좌 - 5화 제어문
    시스템 트레이딩 2021. 1. 9. 17:43

    이번에는 제어문을 배워 보도록 하겠습니다. 프로그램이라고 하면 여러 경우의 수에 따라 각각 수행되는 여러 결과들의 집합 이라고 해도 과언이 아닙니다. 이러한 프로그램의 알파 부터 오메가까지 주요한 동작논리의 뼈대를 구성하는 것이 바로 제어문 입니다.

    파이썬, 그리고 프로그래밍 언어의 제어문들

    제어문이라고하면 가장 흔한 if문 while문, for문 정도를 들 수 있습니다. 또한 파이썬을 공부하는 목적이 데이터 분석인 만큼 타 언어처럼 이 제어문의 구성에 따른 퍼포먼스는 크게 상관이 없음으로 가장 기본적인 제어문을 파이썬에서는 어떻게 사용하는지 한번 살펴 보도록 하겠습니다.

     

    if문

    만약 ~라면. 사실 if문만 가지고도 모든 논리의 프로그램을 작성할 수 있습니다. 

    #if문 예시
    asset_v = int(input('얼마 있어요?'))
    if asset_v > 1000:
        print('오늘 날씨가 좋아요')
        print('같이 놀러 가요')
    else:
        print('새로운 게임이 나왔다고 해요')
        print('집에서 게임이나 합시다')

    여기서 주요하게 보아야 할 부분은

    if문 뒤쪽에 있는 ":" 부분

    else문 뒤쪽에 있는 ":"부분

    그리고 각 조건문 내에 실행되는 라인들의 들여쓰기 입니다.

    타 언어에서는 보통 {}를 이용하여 해결하는 부분인데 파이썬만의 특징이니 잘 숙지 하여야 겠습니다.

     

    실행해 보면 다음과 같이 출력 됩니다.

    더보기

    얼마 있어요?100 
    새로운 게임이 나왔다고 해요 
    집에서 게임이나 합시다 

    Process finished with exit code 0while문

    얼마 있어요?100 
    새로운 게임이 나왔다고 해요 
    집에서 게임이나 합시다 

    Process finished with exit code 0while문

    간단한것 같지만 한번 따라서 해 보세요. 저도 이렇게 만들어 봐야지 하고 작성을 했었는데 여러번의 오류를 범했습니다. :을 사용하지 않았으며 숫자를 입력했는데 문자로 인식하여 오류가 났었구요. 한번 작성들 해 보세요

    그럼 조금만 더 살펴 볼게요, in, not in과 elif를 이용한 중복 조건문을 이용하여 예약한 사람만 입장할 수 있는 시나리오 입니다.

    # in을 사용한 조건문, 한줄로 표현하기
    if '나' in ['너', '너','넝','넌']: print('너안에 나 있다')
    else: print('너안에 나 없다')
    
    #in, not in, elif를 사용한 조건문
    print('제이슨, 너의 이름을 입력해, 영어로', end="")
    name = input()
    if 'J' not in name:
        print('짝퉁 제이슨 이구나')
        print('이놈을 잡아라')
    elif 'a' not in name:
        print('의심 스러운데')
        print('잡아서 조사해')
    elif 'k' in name:
        print('넌 누구니?')
        print('집에 보내라')
    elif name == 'Jason':
        print('환영합니다, 입장하세요')

    사실 if문만 사용해도 어떤 구조라도 다 만들수가 있습니다. 문제는 코드가 매우매우 복잡해 질 수 있는 우려가 있으며 속도또한 느려질 수 있습니다. 

     

    for문

    동일한 동작을 100번 아니 10000번 반복하는데 if문만을 사용하면 어떻게 될까요? 코딩하는 사람의 인내심의 한계가 먼저 찾아올 것입니다. 아래 for문의 기본예를 한번 살펴 보겠습니다. for문의 이해는 다양한 예제들을 살펴보면서 익혀 놓아야 할것 같습니다. 저처럼 코알못 초보는 좀 헷깔리는 부분들이 많이 있습니다.

    #for문, 숫자 더하기
    print('fac연산 최종 숫자를 넣어주세요',end="")
    deg = int(input())
    sum = 0
    for i in range(deg):
        i = i + 1
        sum = sum + i
    print(sum)

     

    결과값은 다음과 같이 나옵니다.

    더보기

    fac연산 최종 숫자를 넣어주세요 100000 
    5000050000

    fac연산 최종 숫자를 넣어주세요 100000 
    5000050000

     

    또 다른 예로 리스트에 있는 값을 출력해 주는 시나리오 입니다.. i라는 변수에는 문자값이 들어 갑니다. (좀 헷깔려서 남겨 놓습니다)

    #for 문의 기본 예
    guest = ['Yuri','Nina','Mina']
    num=1
    for i in guest:
        print('%d 번째 손님은 %s 입니다'%(num,i))
        num = num +1

     

    range문과 같이 사용하고 조건문을 넣고 continue를 이용한 콤보 입니다

    #특정 신문기사의 링크 재인용 숫자를 스크래핑 후 리스트로 넣어 주었음을 가정
    tks = [18,11,12,14,15,10,12]
    for tk in range(len(tks)):
        if tks[tk] >= 14: print('%d번 기사 통과 입니다.'%(tk+1) )
        else: continue

    range()를 이용해서 리스트 겟수를 가지고 for문에 적용하였습니다.

     

     

    while문

    while문도 for 문과 비슷합니다. 사용 케이스에 따라 for문 또는 while문 중 적절한 것을 사용하면 됩니다. for문에서 살펴본 숫자 더하는 것을 while문을 사용해서 작성해 보았습니다. 이 예시의 경우는 for문을 사용하던 while문을 사용하던 효율 면에서는 별 차이가 없습니다.

    #while문, 숫자 더하기
    print('fac연산 최종 숫자를 넣어주세요', end="")
    deg=int(input())
    sum = 0
    while deg != 0:
        sum = sum + deg
        deg = deg - 1
    print(sum)

    하지만 코드 직관성의 관점에서는 for문이 좀 더이해하기 좋은것 같습니다.

     

    while문은 기본적인 사용법은 다음과 같습니다.

    더보기

    while 조건문: 
        수행할 내용1 
        수행할 내용2
        ...

    while 조건문: 
        수행할 내용1 
        수행할 내용2
        ...

    조건문이 참인 동안 수행할 내용들을 지속적으로 수행해 줍니다. 즉 for문과는 사용할 케이스가 분명히 다를것 같습니다. 프로그래밍을 하거나 스크래핑을 하는 경우 특정 조건이 되면 언제든지 종료해야 하는 경우가 많이 있습니다. 이런 경우 while문을 사용해야 효율적인 코드 작성이 가능합니다.

    처음 시작하는 파이썬 - 비쥬얼 스튜디오 코드 설치하기

    처음 시작하는 파이썬 - 1화 다운로드 및 설치

    처음 시작하는 파이썬 - 2화 에디터 설치하기

    처음 시작하는 파이썬 - 3화 최소한의 자료형 알기

    처음 시작하는 파이썬 강좌 - 4화 표준 입출력

    댓글

Designed by Tistory.