목차

    예외처리

    개념

    • 코드를 실행 중에 발생하는 에러를 처리하기 위한 처리입니다.

    예외처리 하기

    특정 코드에 대한 예외처리

    try:
        코드
    except 예외명:
        코드
    • 위와 같이 특정 에러에만 특별한 처리를 하고 싶으면 except를 이용하면 된다.
      • except는 여러개를 작성해도 된다.
    • try문에서 에러가 발생하면, 그 코드 줄(발생 위치) 실행하지 않는다.
      • 에러에 맞는 except로 이동하여 처리한다.

    간단 예시

    try:
        num = 2 /0
        print(num)
    except ZeroDivisionError:
        print('0으로 나눌 수 없습니다.')
    • 위와 같이 작성한다면 try문의 print(num)은 출력하지 않고, except에 '0으로 나눌 수 없습니다.' 가 출력된다.

    에러 메시지 받아오기

    try :
        코드
    except 예외 as 변수:
        코드
    • 위와 같이 작성한다면 예외에 관한 메시지들을 받아올 수 있다.
    try:
        num = 2 /0
        print(num)
    except ZeroDivisionError as e :
        print('0으로 나눌 수 없습니다.',e)
    • 위와 같이 작성한다면 try문의 print(num)은 출력하지 않고, except에 '0으로 나눌 수 없습니다. division by zero'가 출력된다.

    위와같이 사용할 수 있지만, 모든 에러를 볼 수 있는 <font color = red > Exeception </font>을 많이 사용한다.

    except Execption as e :
        print("Error 발생",e)

    ` 위와같이 사용한다면 모든 에러 메시지를 받아올 수 있다.

    else 및 finally

    • else는 예외가 발생하지 않았을 때 실행할 코드이다.
      • except: 가 실행했다면, 실행되는 코드 블록이다.
    • finally는 예외 발생 여부와 상관없이 실행하는 코드이다.
      • except: 의 실행 여부에 상관없이 무조건 실행되는 코드 블록이다.
    try:
        실행할 코드
    except:
        예외 발생시 실행할 코드
    else:
        예외 발생하지 않는다면 실행할 코드
    finally:
        예외 발생여부 상관없이 실행할 코드

    간단한 예시

    try:
        num = 2 /2
        print(num)
    except:
        print("Error 발생",e)
    else:
        print("Error 발생 안했어요")
    finally:
        print("코드 끝났어요")

    위와 같은 코드를 실행하면 '1'을 출력하고 else문과 finally문을 실행하게 된다.

    예외 발생시키기

    • 위와 같은 방법으로는 파이썬에서 지정한 예외에 대한 처리만 할 수 있습니다.
    • 개발자가 생각하는 상황을 예외처리를 하여 발생시키는 방법입니다.

    방법

    raise 예외('에러 메시지')

    예시

    try:
        x = int(input('2의 배수를 입력하시오.'))
        if x %2 ==1:
            raise Exception('2의 배수가 아니에요')
        print(x)
    except Exception as e:
        print('예외가 발생!!',e)

    위와 같이 개발자가 예외 상황을 만들 수 있습니다.

    다시 except에서 실행 후 try문으로 돌아가기.

    "raise 예외('에러 메시지')" 넣기!

    try:
        x = int(input('2의 배수를 입력하시오.'))
        if x %2 ==1:
            raise Exception('2의 배수가 아니에요')
        print(x)
    except Exception as e:
        print('예외가 발생!!',e)
        raise RuntimeError('예외가 발생했어요!!')
    • 코드 실행 중 raise를 만나면 실행 줄이 try로 돌아간다.

    "assert 조건식, 에러 메시지 "를 이용하여 발생시킬 수 있다.

    • 조건식이 FALSE면 예외를 발생시킴
       x = int(input('2의 배수를 입력하시오.'))
       assert x %2 ==1 , '2의 배수가 아니에요'
    • 위와 같이 사용하면 됩니다.
    • 디버깅 모드에서만 실행됨.
      • python -o 파일.py 이렇게 실행시켜야 한다.

    '프로그래밍 및 IT > 파이썬 ( Python )' 카테고리의 다른 글

    파이썬( 클래스 )_10  (0) 2021.05.12
    파이썬(함수)_09  (0) 2021.05.06
    파이썬(파일 입출력)_08  (0) 2021.05.02
    파이썬(문자열)_07  (0) 2021.04.30
    파이썬(반복문)_06  (0) 2021.04.29

    목차

      클래스

      기본개념

      • 객체를 표현하기 위한 문법
      • 클래스가 무엇이냐 하면 필자가 공부를 할 때는 항상 붕어빵 기계를 비유하면서 설명을 들었습니다. 적절한 표현이라고 생각합니다.
        위 말은 즉 **객체 ( 붕어빵 )** 을 동일하게 만들기 위해 **붕어빵 기계 ( 클래스 )** 가 필요하다는 것을 보여주고 싶었던 것 같네요.
        이것을 제 말로 바꿔보면 객체 ( 붕어빵 ) 을 편하게 제작 및 변경( 팥 붕어빵, 슈크림 붕어빵. 등)하기 위해 붕어빵 기계가 있어야 한다는 것을 표현한 것 같네요.
        • 생성한 객체에 어떤 변형된 값을 넣느냐에 따라 값이 변하고, 동일한 것도 편하게 만들 수 있단, 뜻입니다.

      클래스 및 메소드 만들기

      • 클래스 또한 다른 메소드 만드는 방법과 동일하게 : 을 마지막에 붙여줍니다.
      • 메소드의 인자 값의 첫 번째 값은 반드시 self가 들어와야 합니다.
      • 객체 사용은. 을 통하여 사용합니다.
        • 평상시에 자주 쓰는 int(), len(), list() , 등 이것들도 클래스 메소드입니다.

      객체 생성 / 사용

      • 클래스는 여러 번 재사용 가능합니다.
        • 아래와 같은 방식으로 같은 클래스를 여러 인스턴스로 사용할 수 있수 있습니다.
        • 인스턴스1 = 클래스() 인스턴스2 = 클래스() 인스턴스1.메소드( 인자 값 ) 인스턴스2.메소드( 인자값 )

      속성 값 생성

      • **init(self)를 선언하고, 안에 속성 값을 넣어줍니다.
      • self의 의미는 Java 등의 this와 유사( 개인적인 생각엔 동일한 개념 )
      • JAVA의 생성자( 객체 생성 시 초기값을 삽입해주는 느낌 )처럼 사용 가능합니다.
      • 속성 접근 시 self.속성명 혹은 "클래스명. 속성명"을 이용하여 사용합니다.
        • self 혹은 클래스명 중 하나로 접근하면 되는데, 클래스명으로 하면 조금 더 가동성이 높아진다.
      class 클래스 이름:
          self.속성1
          def __init__(self, 매개변수1,매개변수2):
              self.속성2 = 매개변수1
              self.속성3 = 매개변수2    
      • 비공개 속성 (private attribute )
        • 속성 앞에 __ (언더바 2개 )를 삽입해준다.
        • 클래스 외부에서 접근할 수 없다.
        • 비공개 속성을 제어하려면, 클래스 내부에서 제어해야 한다.
          • 클래스 내부의 메소드를 이용하여 호출해서 사용하면 된다
      class 클래스 이름:
          def __init__(self, 매개변수1,매개변수2):
              self.__속성1 = 매개변수1
              self.__속성2 = 매개변수2    

      매개변수 위치 인수 ( 리스트 등 )로 받기

      • 언패킹을 이용하면 된다.
        • 1차원이면, '*' 를사용하고, 2차원이면 '**'를 사용한다
      class 클래스 이름:
          def __init__(self, *argv):
              self.속성1 = argv[0]
              self.속성2 = argv[2]
      class 클래스 이름:
          def __init__(self, **argD):
              self.속성1 = argvD[ key1 ]
              self.속성2 = argvD[ key2 ]

      객체 포함 확인( 클래스의 인스턴스 여부 판단)

      • 반환 값 : True ( 포함됨 ) , False (포함 안됨)
      isinstance ( 인스턴스 , 클래스 )

      정적 메소드 생성

      • 인스턴스를 사용하지 않고 바로 사용할 수 있는 메소드
        • len() , range()...처럼 한 번에 사용할 수 있는 메소드들
      • 정적메소드 앞에 @staticmethod를 붙여준다
        • @를 붙여서 하는것을 데코레이터라고 부른다 ( 추후 공부하면 따로올리겠습니다.)
      • 정적 메소드는 인자값이 self가 아님으로 인스턴스 속성에 접근할 수 없다.
        • 인스턴스 속성에 접근할 필요가 없을때 주로 사용한다.
      class 클래스이름:
          @staticmethod
          def 메소드 ( 매개변수1, 매개변수2 ):
              코드

      클래스 메소드 사용

      • 정적 메소드와 유사함
        • 인스턴스 없이 호출할 수 있다.
      • 정적 메소드와 차이점
        • 클래스의 속성 & 메소드에 접근 할 수 있다.
      clas 클래스이름:
          @classmethod
          def 메소드(cls,매개변수1, 매개변수2):
              코드

      클래스 상속

      기본개념

      • 생성된 클래스를 재생성하는 것.
        • 부모 클래스의 메소드 등을 상속받아 기능을 더 붙인 자식 클래스를 생성합니다.
      • 필자는 '상속'을 배울 때 주로 비유했던 것이 '새'를 이용하여 한 것이 많았습니다. 간단히 말하자면 부모 클래스에 ''라는 것을 선언합니다. 그 후 자식 클래스에서 상속을 받고, 새로운 기능인 '날 수 있다'라는 기능을 추가합니다. 그러면 자식 클래스에는 ''라는 것은 선언되어있지 않지만, 상속받았기 때문에 그 기능을 사용할 수 있습니다.
      • 글로 적으니 어려운 느낌이지만, 부모 클래스에 적혀있는 모든 코드들 자식 클래스에 저희 눈에는 없지만, 적어졌다 라고 생각해도 될 것 같습니다. ( 실제로는 그런 느낌이지만 그건 아닙니다.)
      • 용어
        • 기반 클래스 ( 상속을 해주는 클래스 ) : 부모 클래스 , 슈퍼클래스
        • 파생 클래스 ( 상속을 받는 클래스 ) : 자식 클래스 , 서브클래스

      상속 구현

      • 클래스 선언 시 인자 값으로 기반 클래스를 삽입하여 사용한다.
      • 만약 파생 클래스에서 '__init__'을 선언했다면, super().__init__()을 한 번은 호출해주는 것을 권장한다.
        • 만약 파생 클래스에서 '__init__'을 선언하지 않았다면, 자동으로 기반 클래스의 '__init__'이 호출된다.
          class 기반클래스 : 
              def __init(self):
                  코드
      
          clss 파생클래스 (기반클래스명):
              def __init(self):
                    super().__init__()
                  코드    
      
          clss 파생클래스2 (기반클래스명):
              코드
      
      • 만약 위와 같이 구현하지 않고, 명확하게 구현하고 싶다면, 아래와 같이 적어주면 된다.
        • super()에 인자 값으로 (부모 클래스, self)를 삽입시켜준다.
          • 위와 같이 한다면, 명확히 부모 클래스로 연결된다.
          class 기반클래스 : 
              def __init(self):
                  코드
      
          clss 파생클래스 (기반클래스명):
              def __init(self):
                    super(기반클래스, self).__init__()
                  코드    
      
          clss 파생클래스2 (기반클래스명):
              코드

      메소드 오버라이딩(재정의)

      • 기반 클래스( 부모 클래스 )에서 구현한 메소드를 파생 클래스( 자식 클래스 )에서 재정의 하는 것
        • 메소드 명은 동일한데, 안의 구현 내용을 변경하고 싶을 때 사용한다.
      • 아래와 같이 동일한 메소드명 및 동일한 인자수를 넣어 구현하면 된다.
      • 오버라이딩을 하더라도, super()을 이용한다면, 오버라이딩 이전의 코드를 실행시킬 수 있다.
          class 기반클래스 : 
              def method():
                  코드
              def method2(var1, var2):
                  코드
      
      # Overriding
          clss 파생클래스 (기반클래스명):
              def method():
                  재정의할 코드
              def method2(var1, var2):
                  재정의할 코드
      

      다중 상속

      • 다중 상속이란 2개 이상의 기반 클래스에서 상속을 받는 것이다.
        • 서로 다른 클래스의 기능을 모두 사용하고 싶을 때 사용한다.
          class 기반클래스 1: 
              def __init(self):
                  코드
      
          class 기반클래스 2: 
              def __init(self):
                  코드
      
          clss 파생클래스 ( 기반클래스1 , 기반클래스2 ):
              def __init(self):
                  super().__init__()
                  코드    
      

      다이아몬드 상속

      • 하나의 기반 클래스 A가 B, C에 상속을 시켜주고, D가 B, C에게서 상속을 받는 모양이다.
        • 구조가 복잡하여 클래스의 탐색 순서를 확인하고 사용하는 것을 권장함
          • 필자가 생각하기에는 그냥 안 쓰는 걸 권장합니다. ( 이유 : 오버라이딩을 했다면, 어떤 메소드를 사용할지 명확하지 않음 )
          • 그래도 사용하고 싶다면, 클래스.mro()를 사용하여 호출 순서를 확인하고 사용하는 것이 좋다.

      추상 클래스

      기본개념

      • 클래스를 생성할 때 기본적으로 구현해야 하는 메소드들의 틀을 만들어 주는 클래스
      • 추상 클래스를 상속받은 클래스가 추상 클래스에서 정의한 메소드들을 구현하지 않는다면 에러 발생

      생성 방법

      • 사용하려면 abc (abstract base class ) 모듈을 반드시 import 해야 한다.
        • from abc import * 혹은 import abc
      • 추상 클래스의 메소드는 @abstractmethod를 붙여주어 상속 클래스라는 것을 명시해준다.
        • 만약 import abc로 호출하였다면, @abc.abstractmethod 라고 적어야 한다.
      • 클래스 괄호 안에 metaclass = ABCMeta를 삽입한다.
        • ABCMeta 또한 abc.ABCMeta라고 적어야 한다.
      • 추상 클래스는 상속시켜 오버라이딩을 하기 때문에 다른 코드를 삽입할 필요가 없다.
        • 기본적으로 추상 클래스는 인스턴스를 생성할 수 없다.
      from abc import *
      
      class 추상클래스명 ( metaclass = ABCMeta):
          @abstractmethod
          def 메소드명(self):
              pass
          @abstractmethod
          def 메소드명(var1,var2):
              pass
      

      '프로그래밍 및 IT > 파이썬 ( Python )' 카테고리의 다른 글

      파이썬( 예외 처리 )_11  (0) 2021.05.14
      파이썬(함수)_09  (0) 2021.05.06
      파이썬(파일 입출력)_08  (0) 2021.05.02
      파이썬(문자열)_07  (0) 2021.04.30
      파이썬(반복문)_06  (0) 2021.04.29

      목차

        함수

        함수 사용방법

        • 함수명(입력인수) : 사용하고자 하는 함수를 함수명으로 호출 후 인수가 필요한 함수일 경우 인수값을 사용

        수학함수와 python 함수의 비교

        • 수학함수 표현
        • f(x) = x + 1
        • pyhon에서 함수 정의[indent]수행문장
        • [indent]return 값
        • def 함수명(입력인수):
        • def : 함수를 지칭하는 키워드
        • 함수명 : 함수를 호출하기 위해 사용하는 명시적 변수
        • 입력인수 : 수학 함수식에서 f(x)표현시 함수에 사용되는 x값
        • return 값 : 함수를 수행 후 반환되는 값

        함수를 만드는 이유

        • 함수는 임의의 값을 받아 문장을 수행한 후 결과값을 출력하므로 함수를 이용하면 임의의 값에 대하여 재활용하기 위해 만든다.

        함수 모양

        def FuncName(var1, var2.. ) :

         """ 독스트링(Documentation String,Docstrings)"""  
        
         코드  
        
         return
        • def
        • : Define의 약자로써 선언한다는 의미를 가지고 있다.
        • funcName
        • : 함수의 이름이다.
        • var
          • 매개변수는 함수에서 선언한 개수와 호출시에 넣은 개수가 동일해야한다
        • : 인자값으로써 갯수는 여러개가 들어와도 상관이 없다.
        • 독스트링(Documentation String,Docstrings)
          • """......""" 이와 같이 """로 묶어서 사용한다.
          • 독스트링보다 위에 코드가 있으면 안된다. 즉, 함수의 첫째줄부터 작성되어야한다.
        • : 함수의 설명을 작성하는 것이다. (출력과는 무관하다, 주석같은 느낌이다.)
        • return
          • return 뒤에 값이 없다면 , 그냥 함수를 종료시킨다.
        • : return값이 없다면, 적지 않아도 무관하다.

        언패킹 이용하기

        • 리스트 혹은 튜플 앞에 ''를 삽입하여 사용한다.
          • 인자값이 여러개면 언패킹을 이용한다면 편하게 사용 할 수 있다.
            • 간단하게 리스트 혹은 튜플이 인자값과 1 : 1 맵핑이 된다고 생각하면된다.
            • 그럼으로 리스트 혹은 튜플의 길이가 인자값의 갯수와 동일해야한다.
            • Func(*리스트)
            • Func(*튜플)
          • 가변인수
            • def FuncName(*매개변수):
            • 코드
            • 가변인수 즉 길이가 변하는 리스트 혹은 튜플따위를 인자값으로 받을 때 사용한다.
            • 가변인수와 고정인수를 동시에 사용한다면, 고정인수, 가변인수 순으로 사용해야한다.
              • def FuncName(고정인수 , *가변인수):
          • 위치 인수
            • def FuncName(**매개변수):
            • 코드
            • Func(**딕셔너리)
            • *_를 두번 하는 이유는 *한번만 사용하면 key값을 반환하고, *_을 사용하면 value를 반환한다.
          • 초기값 설정
            • def FuncName(매개변수 = value) :
              • 위와같이 선언한다면, 매개변수의 Default 값이 value가 들어간다.
              • 초기값을 설정한 변수들의 순서는 뒤로가야한다.
                • def FuncName(var1 , var2 = value): <- 가능
                • def FuncName(var1 = value , var2): <- 불가능
        • *

        재귀함수

        • 정의
          • 함수가 자기자신을 다시 호출하는 것이다.
          • 생성시에 탈출조건을 잘 정해줘야한다.
            • 탈출조건을 잘못 설정하면 무한루프가 된다.(프로그램이 끝나지 않음)
        • 모양
          • def recursiveFunc() :
            코드  
        recursiveFunc()  

        람다식

        • 람다식 ( 익명 함수 ) 이란?
          • 함수를 간단히 식 형태로 되어있어 람다 표현식 ( lambda expression ) 이라고 부른다.
          • 즉 return문하나 만 있는 함수라고 생각하면 편하다.
          • 람다식 안에서 새로운 변수생성 은 불가하다.
            • 람다식 외부에 있는 변수는 사용할 수 있다.
          • 주로 함수의 인수로 넣을떄 사용한다.
          • 아래 함수와 람다식은 같은 기능을 처리한다.
        def plus(x):
            return x+1
        lambda x : x + 1

        결과값 : <function main.(x)>

        사용방법

        • lambda 매개변수 : 식
          • 람다식을 변수에 할당시키면 재사용이 가능하다
          • LambdaVar = Lambda(람다식)
        (lambda x : x +1)(1)

        결과값 : 2

        Sequence Type 사용하기

        • (lambda 매개변수 : 식)(인수들)
          • 변수에 할당하지 않고 바로 사용시에 사용한다.
          • 한줄 계산시에 많이 사용한다.
          • 만약 인수를 list와 같은 Sequence Types으로 받는다면, 각각에 값처리가 된다.
        print(list( map (plus,[1,2,3]))) # plus는 위에 함수로 선언함.
        print(list( map ( lambda x : x + 1 ,[1,2,3] ) ))

        결과값 : [2, 3, 4], [2, 3, 4]

        람다에 조건문 삽입하기

        • lambda 매개변수 : 식1 if 조건식 else 식2
          • 조건식이 True면 식1, False면 식2를 반환한다.
        • IF를 사용하였다면 반드시 ELSE를 사용해야한다
        nums = [1,2,3,4,5,6,7,8,9,10]
        list(map(lambda x : -1 if x % 2  else x , nums))

        결과값 : [-1, 2, -1, 4, -1, 6, -1, 8, -1, 10]

        조건문 안에 조건문 넣기

        • lambda 매개변수 : 식1 if 조건식1 else 식2 if 조건식2 else 식3
          • 조건식이 True면 식1, False면 식2를 반환한다.
        • 물론 이렇게 사용 할 수 있지만, 억지로 람다식을 구현한 느낌이다. 가독성이 떨어짐으로 Def를 이용하여 함수를 생성하여 사용하는 것을 권장한다.
        nums = [1,2,3,4,5,6,7,8,9,10]
        list(map(lambda x : '식1' if x % 3 == 0  else '식2' if x % 2== 0 else '식3' , nums))

        결과값 : ['식3', '식2', '식1', '식2', '식3', '식1', '식3', '식2', '식1', '식2']

        Map을 이용하여 Lambda사용하기

        • list(map(lambda x,y : x*y , 인자1,인자2)
        a = [1,2]
        b = [2,3]
        list(map(lambda x,y : x*y , a,b))

        결과값 : [2, 6]

        Filter을 이용하여 Lambda 사용하기

        • filter(함수, 반복가능한객체)
          • 함수가 True일 떄 객채를 가져온다.
        a = [1,2,3,4,5,6,7,8,9,10]
        list(filter(lambda x : x > 5 and x < 10 , a))

        결과값 : [6, 7, 8, 9]

        '프로그래밍 및 IT > 파이썬 ( Python )' 카테고리의 다른 글

        파이썬( 예외 처리 )_11  (0) 2021.05.14
        파이썬( 클래스 )_10  (0) 2021.05.12
        파이썬(파일 입출력)_08  (0) 2021.05.02
        파이썬(문자열)_07  (0) 2021.04.30
        파이썬(반복문)_06  (0) 2021.04.29

        목차

          파일 읽기 / 쓰기

          • 기본용어
            • 파일 -> 객체 : 언패킹(Unpacking)
            • 객체 -> 파일 : 패킹(Packing)
          • 파일 모드 구조
            • 파일열기
              • 읽기 'r'
              • 쓰기
                • 파일의 내용을 버림 :'w'
                • 파일 끝에 추가 : 'a'
                • 파일이 있다면 에러 : 'x'
              • 읽기/쓰기
                • 파일의 내용을 버림 'w+'
                • 파일 끝에 추가
                  • 파일 처음부터 쓰기 'r+'
                  • 파일 끝부터 쓰기 'a+'
                • 파일이 있으면 에러 :'x+'
              • 텍스트모드 : t
                • 위의 읽기/쓰기 모드를 적고 뒤에 붙임
                • 'wt','at'...
              • 바이너리모드 : b
                • 위의 읽기/쓰기 모드를 적고 뒤에 붙임
                • 'wb','ab'...
          • File Obj = open(FileName , Mode)
            • 파일을 읽어드릴 때 사용한다.
            • FileName : 확장자까지 작성한다.
            • Mode
              • 'r' (Read) 읽기 : 이미 있는 파일을 읽어드릴 때 사용
              • 'w'(Write) 쓰기 : 파일을 생성할 때 사용
          • FileObj.write('문자열')
            • FileObj에 문자열를 쓴다. ( 객체 (파일)에 문자열을 저장한다 )
          • FileObj.read()
            • 불러드린 FileObj의 데이터 ( 문자열 ) 을 return해준다.
          • FileObj.close()
            • 파일 입출력작업을 마치면 close()을 이용하여 파일객체를 닫아준다.
          • with open(FileName , Mode) as FileObj :
                코드
            • 블록으로 묶인 작업을 끝내면 자동으로 Close해주어 번거로움을 덜어준다.
          • FileObj.writelines( List )
            • 리스트안에 저장된 값을 파일객체에 저장한다
            • 리스트의 끝에는 '\n'을 붙여야 리스트 객체간 구별을 할 수 있다.
              • 만약 끝에 '\n'이 없다면 한 줄로 저장된다.
          • FileObj.readlines( List )
            • 파일을 1줄씩 읽어드린다.
            • for문 / while문을 이용하여 파일 전체를 읽어드리는 경우가 많다.
              • 권장은 while이다 그 이유는 문자열의 길이를 명확히 알기 힘들기 때문이다.
            • while문으로 입력을 받는다면, 읽어드릴 객체( 문자열 ) 을 'None'으로 초기화 시켜줘야한다.
              • 초기화를 안 시켜주면 시작부터 빈 객체기 때문에 코드를 실행하지 않고 끝난다.
            • while로 파일읽기
            • for로 파일읽기

          다음에 더 알게되는게 있으면 추가할게요~

          '프로그래밍 및 IT > 파이썬 ( Python )' 카테고리의 다른 글

          파이썬( 클래스 )_10  (0) 2021.05.12
          파이썬(함수)_09  (0) 2021.05.06
          파이썬(문자열)_07  (0) 2021.04.30
          파이썬(반복문)_06  (0) 2021.04.29
          파이썬( 자료형 )_05  (0) 2021.04.29

          목차

            • 문자열의 구조는 리스트와 유사
              • 문자열 추출 대괄호 [index_slicing]를 사용
              • 문자열 결합은 '+' 기호를 사용
              • 문자열 바꾸기는 바꿀 문자열을 찾아낸 다음에 대체 함수(replace) 사용
                • 'xxxxyyxx'의 문자열에서 yy를 zz으로 바꾸기 위한 예시 'xxxxyyxx'.replace('y','z')
            • 문자열 특징
              • 문자열 String 문자의 연속이고 리스트의 특징
              • 문자열 찾기 메소드 find('찾을 문자') 결과값은 문자의 위치정보, 없을경우 -1을 출력
              • 문자열 바꾸기 메소드 replace(' 바꿀 문자', '바뀔 문자')
              • 문자열을 특정 문자 기준으로 나누는 메소드 split('기준 문자열')
              • 리스트에 담긴 문자열을 합치는 방법 ' 기준 문자열'. join(문자열 리스트)
              • 대문자 소문자 메소드 upper(), lower()
            • 문자 변환 메소드
              • 지정 문자 삭제하기 ( Default : '공백' )
                • strip([지정문자]) : 모든 [지정문자] 삭제하기
                • rstrip([지정문자]) : 문자열 오른쪽 [지정문자] 삭제하기
                • lstrip([지정문자]) : 문자열 왼쪽 [지정문자] 삭제하기
              • 문자열 정렬하기
                • ljust([길이]) :문자열을 왼쪽으로 정렬 ( [길이] 만큼 길이(메모리)를 잡고 정렬해줌 )
                • rjust([길이]) :문자열을 오른쪽으로 정렬 ( [길이] 만큼 길이(메모리)를 잡고 정렬해줌 )
                • center([길이]) :문자열을 중앙으로 정렬 ( [길이] 만큼 길이(메모리)를 잡고 정렬해줌 )
              • 문자열 채우기
                • zfill([길이]) : "zero fill"을 의미하고, [길이]에 맞춰 문자열의 왼쪽에 0을 채움
              • 문자열 찾기
                • find([지정문자]) : [지정문자]를 왼쪽부터 검색하고, 찾았으면 인덱스 값, 없으면 -1을 반환
                • rfind([지정문자]) : [지정문자]를 오른쪽부터 검색하고, 찾았으면 인덱스 값, 없으면 -1을 반환
                • index([지정문자]) : find와 동일하지만, 못 찾으면 Error을 발생함
                • rindex([지정문자]) : rfind와 동일하지만, 못 찾으면 Error을 발생함
              • 문자열 갯수 세기
                • count([지정문자]) : 문자열에서 [지정문자]를 찾고, [지정문자] 개수를 반환함.
            • 메서드 체이닝 ( Method Chaining )
              • 문자열 메소드를 여러 개를 이어 붙여 연쇄적으로 적용하는 것.
                • ex) 'hi'.rjust(5).upper()
                  • 위와 같이 진행하면 [" HI"]와 같은 모양으로 변환된다.
            • 문자열 포멧팅(string Formating)
              • '%[길이]s'% [문자열] : 문자열 안에 있는 %s에 [문자열]을 삽입한다.
              • '%[길이].[자릿수]f'% [실수] : 문자열 안에 있는 %f에 [값]을 삽입한다.
                • 만약 소수점 2번째까지 출력하고 싶다면, '%.2f' % 2.333과 같이 삽입하면 된다.
              • '%[길이]d'% [정수] : 문자열 안에 있는 %f에 [값]을 삽입한다.
              • '{ 별칭 }'.format([별칭]=[지정문자])
                • ' {} {} {} '.format( 값1 , 값2 ,값 3 )
                • ' {별칭1 } {별칭 2} {별칭 3} '.format( 별칭1 = '값1',별칭2 = '값2',별칭3 = '값4' )
              • format 정렬 인덱스 Default : 0
                • '{[인덱스] : > [길이]}'.format( [값] ) : 인덱스부터 길이만큼 길이를 잡고, 왼쪽 정렬
                • '{[인덱스] : < [길이]}'.format( [값] ) : 인덱스부터 길이만큼 길이를 잡고, 오른쪽 정렬
              • format 자릿수 인덱스 Default : 0
                • '{[인덱스] : 0[길이]d}'.format( [값] ) : 정수형 출력 시 길이만큼 잡고 삽입.
                • '{[인덱스] : 0[길이].[자릿수]f}'.format( [값] ) : 실수형 출력 시 길이만큼 잡고 삽입.

             


            수업 들으면서 중구난방식으로 정리를 하였다. 중복이 보이긴 하지만, 다음에 다시 돌아와서 정리를 해야겠다.

             

            각 함수 별 출력까지 하고 싶지만. 그러면 너무 길어질 것 같아 패스하겠다( 다음에 글을 쪼개던가 해야겠다.)

            '프로그래밍 및 IT > 파이썬 ( Python )' 카테고리의 다른 글

            파이썬(함수)_09  (0) 2021.05.06
            파이썬(파일 입출력)_08  (0) 2021.05.02
            파이썬(반복문)_06  (0) 2021.04.29
            파이썬( 자료형 )_05  (0) 2021.04.29
            파이썬(변수)_04  (0) 2021.04.29

            목차

              파이썬에도 다른 언어와 동일하게 대표적으로 이용하는 반복문은 for 문과 while문이다.

               

              FOR

              더보기

              for문은 JAVA의 향상된 for문 , c++의 foreach문과 유사하게 사용된다.

              • 문법
              • for 반복자 in 반복객체:
                [indent] 반복자를 활용한 문장(반복자는 필수가 아님)
              • break
                • 반복문 수행 도중 break문을 만나게 되면 반복문을 종료
                • break를 위해 조건문을 사용
              • contiue
                • 반복문을 수행하는 도중에 continue문을 만나면 반복문의 처음으로 돌아 가게 됨
                • continue를 위해 조건문을 사용

              필자는

              for i in range( len ( var) ) :
              	....

                       상황에 따라 다르지만 위와 같은 모양으로 자주 사용한다.

               

              WHILE

              더보기
              • 문법
                while 조건식:
                [indent]수행문장
              • while문은 조건식이 False 이거나 break문을 만날때 까지 반복
              • while문의 조건식은 탈출 조건을 주어야 무한 반복을 하지 않는다

               


              부족한 부분이 많습니다.

               

              공부하면서 더 배우게 되면 추가 수정하겠습니다.

               

              '프로그래밍 및 IT > 파이썬 ( Python )' 카테고리의 다른 글

              파이썬(파일 입출력)_08  (0) 2021.05.02
              파이썬(문자열)_07  (0) 2021.04.30
              파이썬( 자료형 )_05  (0) 2021.04.29
              파이썬(변수)_04  (0) 2021.04.29
              파이썬(조건문)_03  (0) 2021.04.28

              + Recent posts