ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 3. (2) 파이썬 자료형 문자열
    파이썬(Python) 강의 2019. 2. 5. 14:24

    맨 처음 자료형이랑 무엇인가?에 대해서 이야기 했던게 기억나는가? 자료형이란 메모리 공간 + 표현방법 + 기능들(오퍼레이션/연산)으로 이루어진다고 했다. 지난 포스트에서 파이썬 자료형 문자열의 표현방법을 알아보았다. 오늘은 문자열의 기능(오퍼레이션)에 대해 알아보고자 한다.

    들어가기전에

    이 포스트는 여러분이 파이썬을 설치했고 각자 원하는 IDE를 이용해 파이썬을 개발한다고 가정한다. 대화형(Interactive) 터미널을 사용해도 상관 없다. 혹시 파이썬을 설치하지 않았다면  1.파이썬 설치 및 개발환경 설정 이 포스트에서 파이썬과 파이썬 개발환경을 먼저 셋업하길 바란다. 앞서 말했듯이 반드시 실습 해 보길 바라고 30분 이상 소요하지 말라. 또한 이전 포스트인 3. (1) 파이썬 자료형 문자열에서 스트링(문자열)에 대해 먼저 학습 한 후 이 포스트를 진행해라.

    • 숫자(Numbers) : 12, 24.3, 3+2j, .. (2.파이썬 자료형 숫자)

    • 문자(Strings) : "hello, "world" <- 이 포스트에서 다루는 자료형 (이전 포스트: 3. (1) 파이썬 자료형 문자열)

    • 리스트(Lists) : [1, 3, [3, 'hey'], 4]

    • 딕셔너리(Dictionaries) : { 'name': 'fsoftwareengineer', 'age' : 17}

    • 튜플(Tuples) : (1, 'a', 4, 'c')

    • 파일(Files) : f = open('filename', 'r')

    • 셋(Sets) (집합) : { 1, 4, 5 }

    • 다른 타입들 : Boolean (True/Faluse), types, None, etc

    • 프로그래밍 유닛 타입(Programming unit types) : 함수(Functions), 모듈(Modules), 클래스(Classes)

    • 구현 레벨 타입(Implementational-level types) : 예외(Exception) 등등..

    목표

    • 함수(Function)
    • 예제: find 함수
    • 예제: replace 함수
    • 예제: split 함수
    • 예제: upper 함수
    • 예제: isAlpha 함수
    예상 소요시간: 30분 이내

    함수

     함수란 어떤 기능을 의미한다. 아래의 예를 보자.


    위의 함수는 여러 인풋을 받아서 토끼인형을 만든다. 함수란 어떠 인자(인풋)을 받아서 인풋을 조작해서 어떤 결과(아웃풋)을 만들어 낸다. 아래를 다시 보자.



    토끼의 귀나 눈 대신 이번엔 x, y, z를 인풋으로 받는 함수를 보자. 이 함수를 거치고 나면 x*y + z라는 결과 값을 받을 수 있다.


    2, 3, 7이라는 인풋을 주었더니, 13이라는 아웃풋을 받을 수 있다. 이제 파이썬에서 함수를 어떻게 쓰는지 보자.

    위의 노란색 박스에 함수라고 쓰여 있는 그림 대신 파이썬에서는 그냥 함수 이름을 쓴다. 여기서는 함수 이름을 function으로 예를 들었다. (함수 이름은 어떤 것이든 될 수 있다.) 함수 이름뒤에는 괄호를 친 후 들어갈 인풋을 순서대로 적어준다. 예를 듯면 두번 째 줄에 function(2, 3, 7)은 위의 노란색 함수 박스처럼 x=2, y=3, z=7을 받아 x*y + z를 계산한다고 하자. 따라서 아웃풋은 13일 것이다. 그렇다면 앞의 "y ="는 무엇인가? 이것은 바로 function(2, 3, 7)의 결과 값인 13을 y에 할당(저장)하라는 뜻이다. 따라서 y는 13을 가지고 있다.

    함수에 대해서 갑자기 왜 설명을 하나면, 앞서 말했던 자료형은 메모리 공간 + 표현방법 + 기능들(오퍼레이션/연산)로 이루어져있고 이 포스트에서는 "기능"을 알아보기로 했다. 기능에는 두 가지가 있다. 연산자(+, -, /, %, >>, <<. * ..등) 이 있고, 방금 설명 한 "함수"가 있다. 함수는 보다 복잡한 기능을 수행하고 코드를 모듈화 할 수 있다. 모듈화에 대해서는 나중에 함수에서 더 자세하게 설명 할 것이니 지금은 사용하는 방법만 알면 된다.

    그렇다면 함수를 어떻게 사용하는가?


     나중에 함수를 사용하는 법에 대해서 자세히 설명하겠다. "문자열"다음에 마침표를 누르고 원하는 함수를 쓴다. 그 다음엔 괄호를 치고 인자를 적는다. 

    보통은 "something".function이렇게 따옴표가 있는 채로 함수를 잘 사용하지 않고, 변수에 할당한 후 사용하는게 일반적이다. 이제 예제를 보면서 더 이해 해 보도록 하자.


    예: find 함수

    find함수는 찾고싶은 문자열을 인풋으로 받아서 그 문자열이 시작되는 곳의 "인덱스"를 리턴하는 함수이다. 실행 해 보자.

    s = "something"
    y = s.find("th")
    print(y) 4

    find함수는 이렇게 당신이 입력한 "th"를 문자열에서 찾아 인풋(여기선 th)가 시작되는 곳의 인덱스를 리턴한다. 만약 인풋을 찾을 수 없다면 -1을 리턴한다.

    s = "something"
    y = s.find("kk")
    print(y) -1

    예제: replace 함수

    함수의 이름에서 알 수 있듯이 replace함수는 원하는 문자열을 찾아 다른 문자열로 바꿔준다. 따라서 이 함수는 인풋을 2개 받는다. 첫번째 인풋으로 바꾸고 싶은 문자, 두번째 인풋으로 바꿔야 할 문자를 받는다. 말로 설명하기 어려우니 실습을 해보자.

    s = "something"
    y = s.replace("th", "kk")
    print(y) somekking

    "th"가 "kk"로 변경 된 것을 알 수 있다. 이 함수는 예를들어서 "alice,bob,cindy"처럼 콤마로 나누어진 문자열을 나누고 싶을 때 유용하다.

    s = "alice,bob,cindy"
    y = s.split(",")
    print(y) ['alice', 'bob', 'cindy']


    Q) 만약 바꾸고 싶은 문자가 존재하지 않는다면 어떻게 되는가? 실습 해 보아라.

    예제: split 함수

    split함수는 인풋으로 받은 문자를 기준으로 문자열을 두개로 나눠준다. 두개로 나눠진 문자열은 리스트로 리턴된다. 리스트를 잘 모르니 일단 두개로 나눠지는 것만 확인 해 보자.

    s = "something"
    y = s.split("t")
    print(y) ['some', 'hing']

    t는 없어지고 t앞 뒤를 기준으로 문자열이 잘린 것을 확인 할 수 있다.


    예제: upper 함수

    upper함수는 아무 인풋도 받지 않고 이 함수를 부른 문자열을 전부 대문자로 바꿔준다.

    s = "something"
    y = s.upper()
    print(y) SOMETHING

    예제: isAlpha 함수

    isAlpha함수는 아무 인풋도 받지 않고 이 함수를 부른 문자열안의 내용물이 문자면 True 문자가 아니면 False를 리턴한다.

    s = "something"
    y = s.isalpha()
    print(y) Ture

    False를 리턴하는 경우는 다음과 같다.

    s = "12345"
    y = s.isalpha()
    print(y) False

    오늘은 문자열이 제공하는 함수들을 이용해서 다양한 실습을 해 보았다. 아직 초반인데도 불구하고 변수와 함수를 조금씩 하는 이유는 변수와 함수는 프로그래밍 언어에서 떼 놓고 배울 수 없는 부분이기 때문이다. 지금 혹시 이해가 잘 안되더라도 일단 자꾸 써보면 나중에 변수와 함수를 할 때 앞에서 썼던 변수와 함수에 대해 더 잘 이해 할 수 있을 것이다.


    여러분이 파이참을 사용하고, 스트링(문자열)이 제공하는 다양한 함수를 실습 해 보고 싶다면 다음을 참고해라. s이후 .을 찍으면 여러가지 사용 가능한 함수와 사용법이 나온다. self라고 쓰여있는 녀석들은 무시해도된다. 



    댓글

f.software engineer @ All Right Reserved