python
-
계산기 프로그램 만들기 (파이썬, 후위 계산)python 2022. 2. 20. 17:03
계산기는 숫자와 함께 다양한 연산자도 나타나고, 괄호도 처리해야 하며, 특히 연산자들의 우선순위도 고려해야 정확한 결과가 나온다. 기본적으로 수식은 연산자와 피연산자를 이용해 표현하는데, 이들의 상대적인 위치에 따라 다음과 세 가지 표기법으로 구분된다. 전위 중위 후위 연산자 피연산자1 피연산자1 피연산자1 연산자 피연산자2 피연산자1 피연산자2 연산자 + A B A + B A B + + 5 * A B 5 + A * B 5 A B * + 컴퓨터는 다음과 같은 장점 때문에 후위표기 계산방법을 사용한다. - 괄호를 사용하지 않아도 계산 순서를 알 수 있다. - 연산자의 우선순위를 생각할 필요가 없다. 식 자체에 우선순위가 이미 포함되어 있기 때문이다. - 수식을 읽으면서 바로 계산할 수 있다. 중위 표현식은..
-
파이썬 - News categorizationpython 2021. 3. 22. 18:08
여러 주제의 뉴스 글들이 있을 때 어떻게 비슷한 주제의 기사들끼리 묶을 수 있을까? 컴퓨터는 문자를 그대로 이해하지 못하기 때문에 문자를 Binary 형식으로 전환시켜야 한다. (문자 -> 숫자) 비슷한 주제로 묶으려면 숫자로 유사하다를 표현해야 한다. 유사하다는 가깝다라는 의미로 받아들일 수 있기 때문에 vector형식으로 전환시킬 수 있다. (문자 -> 숫자 -> 벡터) 문자를 Vector로 전환하는 방법은 여러가지가 있지만 단어의 빈도수를 카운팅하기에 효과적인 BOW를 이용한다. BOW(=Bag of Words, 단어별로 인덱스를 부여해서, 한 문장(또는 문서)의 단어의 개수를 vector로 표현) Bow의 상세한 설명과 예 : wikidocs.net/22650 / hleecaster.com/nlp..
-
파이썬 - 제너레이터 / 데커레이터python 2021. 3. 19. 21:05
제너레이터generator 제너레이터는 파이썬의 시퀀스를 생성하는 객체다. 제너레이터로 전체 시퀀스를 한 번에 메모리에 생성하고 정렬할 필요 없이, 잠재적으로 큰 시퀀스를 순회할 수 있다. 제너레이터는 이터레이터에 대한 데이터의 소스로 자주 사용된다. my_range() 함수는 제너레이터다(일련의 정수를 생성한다). 제너레이터는 실행될 때 함수를 실행하는 것이 아니라, 제너레이터 함수가 가진 객체를 반환한다. 제너레이터는 한번 생성해서 반환한 객체를 보관하지 않기 때문에, 이전의 코드를 실행한 후 추가한 코드를 실행하면 객체가 출력되지 않는다. 제너레이터를 순회할 때마다 마지막으로 호출된 항목을 기억하고 다음 값을 반환한다. 제너레이터는 일반 함수와 다르다. 일반 함수는 이전 호출에 대한 메모리가 없고,..
-
파이썬 - docstringpython 2021. 3. 19. 20:31
'가독성은 중요하다readability counts'라는 구절은 파이썬의 철학(www.python.org/dev/peps/pep-0020/)에 들어있는 구문이다. 함수의 docstring을 이용해서 함수 몸체 시작 부분에 문자열을 포함시켜 함수 정의에 문서(documentation)를 붙일 수 있다. >>> def echo(anything): ... 'echo returns its input argument' ... return anything docstring은 길게 작성할 수 있으며, 서식(formatting)을 추가할 수도 있다. def print_if_true(thing, check): ''' Prints the first argument if a second argument is true. Th..
-
파이썬 - 이터레이터python 2021. 3. 18. 21:55
이터레이터(Iterator)는 값을 차례대로 꺼낼 수 있는 객체다. 파이썬에서는 이터레이터만 생성하고 값이 필요한 시점이 되었을 때 값을 만드는 방식을 사용한다. 이 행위는 데이터 생성을 뒤로 미루는 것인데 이런 방식을 지연 평가(lazy evaluation)이라고 한다. 이터레이터는 반복자라고 부르기도 한다. 출처: 코딩도장 요소가 여러 개 들어있고, 한 번에 하나씩 꺼낼 수 있는 객체를 반복 가능한 객체라고 한다. 흔히 사용하는 문자열, 리스트,딕셔너리 등이 반복 가능한 객체다. 객체가 반복 가능한지 알기 위해선 객체에 __iter__ 메서드가 있는지 확인해보면 된다. >>> dir([1,2,3]) ['__add__', '__class__', '__contains__', '__delattr__', '..
-
파이썬 - 람다 함수python 2021. 3. 16. 23:28
lambda는 함수를 생성할 때 사용하는 예약어로 def과 동일한 역할을 한다. 람다 표현식은 식 형태로 되어 있다고 해서 람다 표현식(lambda expression)이라고 부른다. 보통 함수를 한줄로 간결하게 만들 때 작성하고 간편하기 때문에 다른 함수의 인수로 넣을 때 자주 사용한다. lambda 매개변수 : 표현식 def으로 표현된 함수를 lambda 표현식으로 바꿔보자 >>> def plus_ten(x): ... return x + 10 ... >>> plus_ten(1) 11 >>> plus_ten = lambda x: x + 10 >>> plus_ten(1) 11 람다 표현식은 변수에 할당하지 않고 표현식 자체를 바로 호출할 수 있다. 표현식을 괄호로 묶은 뒤에 인수도 괄호로 묶어서 뒤에 배..
-
파이썬 - 인수(argument)python 2021. 3. 16. 15:40
위치인수 positional argument 함수에 인수를 순서대로 넣는 방식을 위치 인수(positional argument)라고 한다. 즉, 인수의 위치와 갯수가 정해져 있다. ex) >>> print(10, 20, 30) 10 20 30 언패킹 Unpacking 인수를 순서대로 넣을 때 리스트나 튜플을 사용할 수 있다. 리스트 또는 튜플 앞에 *(애스터리스크)를 붙여 함수에 넣으면 된다. (언패킹, 말 그대로 리스트의 포장을 푼다는 뜻이다.) >>> def print_number(a, b, c): ... print(a) ... print(b) ... print(c) ... >>> x = [10, 20, 30] >>> print_number(*x) 10 20 30 리스트 변수 대신 리스트 앞에 *를 ..
-
클래스 - 메서드 오버라이딩과 다형성python 2021. 3. 11. 23:33
다형성(polymorphism)이란 '상속 관계에 있는 다양한 클래스의 객체에서 같은 이름의 메서드를 호출할 때, 각 객체가 서로 다르게 구현된 메서드를 호출함으로써 서로 다른 행동(behavior), 기능, 결과를 가져오는 것'을 의미한다. 그리고 이를 구현하기 위해 파생 클래스(derived class) 안에서 상속받은 메서드를 다시 구현하는 것을 메서드 오버라이딩(method overriding)이라고 한다. 메서드 오버라이딩 #code 1-1 class CarOwner: def __init__(self, name): self.name = name def concentrate(self): print("{0} can not do anything else".format(self.name)) #나머지 메..