본문 바로가기
Programming/6. Elice AI Track

001_사전 학습 내용 정리(~6/20)

by @sangseophwang 2021. 6. 22.

@behance

 

엘리스의 아침이 밝았습니다!

 더 이상은 공부 핑계로 블로그 글을 미루지 않기 위해 시작한 TIL 프로젝트! 이미 AI Track은 시작한지 벌써 이틀이 다 돼가지만 역시 시작은 사전 학습 기간동안 배운 파이썬부터 정리하는 것이 맞다고 생각해 이 글을 시작으로 그날그날 공부한 내용을 정리해보고자 한다. 부디 1일 1커밋만큼 이 글 작성도 꾸준히 하길 바라며 🙏🏻


Regular Expression  [ 정규식 표현 ]

 

정규식 검사 함수

  • re.match (pattern, string) →  string 시작 부분부터 패턴이 있는지 쭉 검사한 후 match object 변환
  • re.search (            ``        ) →  string 전체에 패턴이 있는지 검사한 후 match object 변환
  • re.findall (            ``        ) →  string 전체에 패턴이 있는지 검사한 후 list 반환
  • re.finditer (            ``        ) →  string 전체에 패턴이 있는지 검사한 후 그 결과에 대한 iterator 객체 반환

문자열 수정 함수

  • re.sub ('패턴', '바꿀문자열', '문자열', 바꿀횟수) →  특정 문자열을 찾아 다른 문자열로 바꿈

 함수 예시 

>>> re.match('Hello', 'Hello, world!')     # 문자열이 있으므로 정규표현식 매치 객체가 반환됨
<_sre.SRE_Match object; span=(0, 5), match='Hello'>

>>> re.search('^Hello', 'Hello, world!')     # Hello로 시작하므로 패턴에 매칭됨
<_sre.SRE_Match object; span=(0, 5), match='Hello'>

>>> re.sub('apple|orange', 'fruit', 'apple box orange tree')    # apple 또는 orange를 fruit로 바꿈
'fruit box fruit tree'

 

메타 문자

→ 약속된 기호. 규칙을 가진 단어를 짧게 쓸 수 있다!

^ 문자열 시작 \n 개행 문자 ( 줄바꿈, 엔터와 같은 역할)
$ 문자열 끝 \ 이스케이프용 문자
[ ] 문자 클래스  [aeiou], [^aeiou], [A-Za-z] . 모든 문자와 대응
\d 숫자 \t 가로 탭 문자
\D 숫자가 아닌 모든 문자 \u 세로 탭 문자
\w 알파벳 대소문자, 숫자, 밑줄( _ ) \f 용지 넘김
\W 위 내용 빼고 나머지   ↑ \r 캐리지 리턴
\s 공백, 탭 문자 \b word boundary / 단어 구분자를 찾아줌
\S 위 내용 빼고 나머지   ↑    

수량자

* 0개 이상 (elice* = elice, elic, eliceee..) {n} n개 ( \d{3} = 123,456.. )
+ 1개 이상 {n,m} n 이상 m 이하
? 0 or 1 (elice? = elic or elice) {n,} n개 이상

그룹               ( )

  • (e | a)lice  =  elice  or  alice
  • (tom | pot)ato  =  tomato  or  potato
  • (base | kick){2}  =  basebase, basekick, kickkick, kickbase
  • (to)ma\\1  =  tomato

객체지향 프로그래밍

 상속, 다형성(같은 모양의 코드가 다른 역할을 하는 것), 캡슐화를 통해 코드의 재사용이 쉽고 우리 실생활을 더 잘 나타낼 수 있다!

클래스 : 객체를 만들 수 있는 틀 ( 빈 껍데기 / 붕어빵 틀 )

  → class Human (self):

                    field( 필드 ) : 객체가 가지고 있는 성질 ( 변수 )

                    method( 메서드 ) : 객체가 가지고 있는 행동  ( 함수 )

class Pokemon:
	p_name = ""
    p_hp = 0
    p_type = ""
    
    def skill(self):             # 생성자
    	pass

 

생성자 : 모든 클래스의 기본이 되는 메소드 // 인스턴스가 처음 어떻게 만들어질지 결정

 class Post:
 	def __init__(self, author, content):
    	self.author = author
        self.content = content

 

인스턴스 : 클래스로 만들어낸 객체 ( 붕어빵 ) 

→ 인스턴스는 '예를 들어' 에 사용하는 'for instance' 에서 나왔다. 즉 클래스의 예시라고 생각하면 이해하기 좋다.

 

class Pikachu(pokemon):
	p_name = "Pikachu"
    p_hp = 50
    p_type = "Electric"
    def skill(self):
    	print("10만 볼트!!")

인스턴스를 사용함에 있어 '상속' 이라는 개념이 있는데, 여러 클래스가 비슷한 속성과 메소드를 공유해야할 때, 또는 클래스 간 계층 구조 (부모 - 자식)가 확실할 때 상속을 한다. 이 과정에서 자식 클래스가 부모 클래스보다 정보가 많을 수 있다!!

 

class Reaction:
	def __init__(self, reaction_type, post, user):
        if reaction_type not in ["LIKE", "LOVE", "HAHA", "SAD", "ANGRY", "WOW"]:
            raise ValueError("올바른 리액션을 선택해주세요!")
            
        self.reaction_type = reaction_type
        self.post = post
        self.user = user    
        
>>>> class Angry(Reaction):
    	def __init__(self, post, user):
        	super().__init__("ANGRY", post, user)       # 상속
        	post.negative_reactions += 1
           
class User:
    def __init__(self, name):
        self.name = name


class Post:
    def __init__(self, content):
        self.content = content
        self.reactions = []
        self.positive_reactions = 0
        self.negative_reactions = 0

 

모듈 : 특정 목적을 가진 함수, 자료의 모임 (코드 모음집)

import 로 불러와서 사용한다.

import random

random.randrange(start, stop)

패키지 : 모듈을 폴더로 구분해 관리하는 것

import food(패키지).tomato(모듈)

from food(패키지).tomato(모듈) import ketchup(함수)

 


matplotlib

mat : math  //  plot : 점찍다, 그래프 그리다 // lib : 라이브러리

→ 데이터들을 그래프로 만들어주는 라이브러리

 

import matplotlib.pyplot as plt
    → 보통 이렇게 시작한다.

 

plt.bar ( x[가로], y[세로], align="center" [가운데 정렬])  → 바 그래프

plt.plot (                                                                         )  → 꺾은선 그래프

plt.seatter (                                                                   )  → 점만 찍힘 / 경향성 파악에 용이                 

 

 


버그(Bug)

→ 코드가 원하는대로 동작하지 않는 모든 경우

  • 프로그램이 죽는 경우 (crash)
  • 예상보다 훨씬 느릴 때
  • 잘못된 결과가 나올 때
  • 설계상 일어나면 안되는 일이 일어났을 때

예외 (Exception)

→ 일반적이지 않은 코드의 동작

  • 사용자가 프로그램을 강제 종료했을 때
  • 분수의 분모가 0일 때
  • 열고자 하는 파일이 없을 때
  • 인터넷이 불안정할 때

에러 메세지 (Error)

Traceback (most recent
                        call
last)
함수를 아래부터 위로 읽어봐라 TypeError 연산 실수 (문자와 숫자의 합 등)
NameError 오타 ZeroDivisionError 0으로 나눴다!
SyntaxError 문법이 잘못됐다! IndexError 문자열의 n번째 글자가 존재하지 않는다!

 

반응형

'Programming > 6. Elice AI Track' 카테고리의 다른 글

006_git_the final (6/25)  (0) 2021.06.27
005_git & Clean Code(6/24)  (0) 2021.06.25
004_gitlab & Clean Code(6/23)  (0) 2021.06.23
003_git(6/22)  (2) 2021.06.23
002_리눅스(6/21)  (0) 2021.06.23

댓글