왜 배워야하는가?파이썬에서는 모든 것은 객체로 취급이 됩니다. 즉, 정수, 문자열, 클래스의 인스턴스 뿐만 아니라 함수 또한 객체로 취급이 됩니다. 파이썬에서 함수를 호출할 경우 객체의 종류에 따라 개체의 변화 양상이 결정됩니다. 따라서 객체참조에 의한 호출을 이해하게 되면 값들의 변화 흐름을 이해할 수 있고 디버깅을 하는데에 도움이 됩ㄴ다.객체파이썬에서는 모든 것은 객체라고 하였습니다. 한 entity가 객체라는 것은 ① 속성 ② 메서드 ③ 고유식별자 ④ 타입을 갖고 있다는 뜻입니다. 함수도 속성과 메서드를 가질 수 있습니다.고유식별자란 메모리 상의 주소입니다. 즉, 모든 객체는 메모리 상에 고유의 주소를 갖고 있습니다.객체는 타입을 갖고 있습니다. 함수의 타입을 조사하면 function class의 ..
문제출처 문제분석정수 n을 입력 받은 후 로직에 따라 최후에 남는 카드 번호를 반환하는 로직을 짜야한다. 컨테이너에 1부터 n까지의 카드가 있고 맨 앞의 카드는 제거, 그 다음 카드는 덱의 가장 뒤로 보낸다. 카드가 하나가 남을 때까지 과정을 반복한다. 로직을 정리하면 다음과 같다.1. n을 입력받음2. 정수 1부터 n까지를 아이템으로 갖는 컨테이너 생성3. 컨테이너에서 가장 앞 아이템 제거4. 컨테이너에서 가장 앞 아이템을 맨 뒤로 보내기5. 컨테이너에 남은 아이템의 갯수가 1개일 때까지 3,4 단계 반복6. 남은 아이템 반환코드구현from sys import stdinfrom collections import dequeinput = stdin.readlinen = int(input())queue = ..
문제출처 https://www.acmicpc.net/problem/18110문제회고절삭평균이라는 개념을 이용해 알고리즘을 구현해야하는 문제였다. 엣지 케이스에 대한 연습과 파이썬의 round 함수의 작동원리를 배울 수 있게 되었다. 게다가 시간초과를 극복하기 위해 input 대신에 sys.stdin.readline을 써야했다. round() 함수반올림이란 수가 있을 때 5보다 작으면 내리고 5와 같거나 크다면 다음 자리에 1을 더하는 개념이다. 하지만 파이썬의 round 함수는 다르게 작동한다. 수가 5보다 작으면 내리고 5보다 클 때 올리는 것은 동일하다. 하지만 수가 5일 때 처리하는 방식이 반올림 개념과 다르다. 수가 5일 때는 앞자리가 홀수일 때 내리고 짝수일 때는 올린다. 문제접근input함수와..
#1 음성합성기술이란?텍스트를 처리하여 음성으로 만드는 기술이다.텍스트로부터 음성데이터를 만든 후에 이를 재생하는 구조이다.#2 gtts로 음성합성하기gtts란?구글에서 제공하는 음성합성 패키지다.설치법pip install gttspip install pydubbrew install ffmpeg사용가능한 언어 확인하기사용가능한 언어의 목록을 출력한다. 사전 컴프리헨션을 사용해서 한국어, 영어와 같이 특정 언어도 검색할 수 있다.import gttsprint("사용 가능한 모든 언어들", gtts.lang.tts_langs())# 영어와 한국어만 보기# 딕트 컴프리헨션{ k: v for k, v in gtts.lang.tts_langs().items() if v.lower() == "kor..
#1 상속이란?부모클래스가 자식 클래스에게 속성을 넘겨주는 것이다. 새로운 클래스를 만들 때 기존의 클래스가 가진 속성들을 그대로 사용할 수 있다. 기존의 클래스를 부모클래스, 새로운 클래스는 자식클래스이다. 상위클래스와 하위클래스라고도 한다.#2 상속 문법자식 클래스 정의하기새로운 클래스를 정의할 때 기존 클래스를 상속받을 수 있다. 새로운 클래스(자식 클래스)의 이름 옆에 부모 클래스의 이름을 기재한다.# 부모클래스class SuperClass: def method_super(self): print("Super method")# 자식클래스: 괄호로 상속받을 클래스 이름 추가class SubClass(SuperClass): pass자식 객체 사용하기자식 객체를 생성하면 자신의 메..
#1 연산자 오버라이딩init처럼 클래스를 만들 때 정해진 기능을 할 수 있도록 미리 정해진 특별한 메서드들이 있다. 연산자들도 내부적으로는 특별한 메서드로 구현되어 있다. 기본자료형처럼 객체에 연산자를 사용하고 싶으면 특별한 이름을 가진 메서드들을 만들면 된다.x = int(1)y = int(3)a = x + y#a = x.__add__(y)print(a) 벡터 자료형이다. 사용자정의 자료형이기 때문에 벡터 간에 덧셈 연산이 정의되어 있지 않다.class Vector2D: def __init__(self, x, y): self.x = x self.y = yv1 = Vector2D(1, 2)v2 = Vector2D(3, 4)v3 = v1 + v2 # ???아래와 같이 연산자..