Docstring(독스트링) 앞으로 함수를 생성할 때, 주석으로 해당 함수를 설명하기 보다는 독스트링을 사용하는 것도 좋을 것 같다. def sample(): """이 함수는 안녕을 출력하는 함수이다.""" print("안녕") sample() >>> 안녕 python/python3 python 명령어로 실행하는 것과 python3 명령어로 실행할 때 성능 차이가 난다. 어차피 최근 프로그래밍 하는 것들은 대부분 python3이니 해당 명령어를 사용하는 것이 좋다. 물론 python2 이하 환경에서 작성된 코드를 python3 명령어로 실행시키면 오류가 날 수도 있다. 호환되지 않는 변경사항이 포함되어 있기 때문이다. 빈 리스트 판별 비어 있는 리스트를 판별할 때 C++에서부터 항상 len(arr) ==..
PEP 8 PEP은 파이썬 개선 제안서(Python Engahncement Proposal)다. 아마 8번째 문서라 8이 붙은 것 같다. 즉 PEP8은 파이썬 코드를 어떻게 구성할지 알려주는 스타일 가이드다. 물론 문법만 맞춰도 프로그램이 실행되지만, 일관성 있는 스타일을 사용하면 유지보수가 더욱 쉬워지고 가독성도 높아진다. 다양한 프로젝트에서 협업할 때에도 스타일 가이드를 따르면 좋다. PEP 8에는 파이썬 코드를 명확하게 작성하기 위한 방법이 자세히 나와 있다. 전체 가이드는 이 링크에서 볼 수 있다. 반드시 따라야 하는 몇 가지 규칙은 다음과 같다. 화이트스페이스(whitespace) 파이썬에서 화이트스페이스(공백)는 문법적으로 의미가 있다. 특히 파이썬은 코드의 명료성 때문에 공백의 영향에 민감한..
tkinder tkinter는 파이썬에 기본으로 포함되어있는 라이브러리이며 GUI 프로그래밍이 가능하도록 많은 컨테이너들을 제공한다. 기본 프레임 구축 from tkinter import * 단 한줄로 tkinder을 사용할 수 있게 되었다. 주요 메서드 root = Tk() root.title("Nado GUI") root.geometry("640x480") # 가로 * 세로 root.geometry("640x480+300+100") # 가로 * 세로 + x좌표 + y좌표 Tk() : 윈도우 창 생성 (위 경우에는 root 변수에 할당해 root 윈도우 창이 생성된다.) .title(text) : 윈도우 창 제목 설정 .geometry(text) : 윈도우 창 크기 설정 (인자를 문자열로 받고, 뒤에 ..
링크 : https://www.acmicpc.net/problem/25304 25304번: 영수증 준원이는 저번 주에 살면서 처음으로 코스트코를 가 봤다. 정말 멋졌다. 그런데, 몇 개 담지도 않았는데 수상하게 높은 금액이 나오는 것이다! 준원이는 영수증을 보면서 정확하게 계산된 것 www.acmicpc.net 문제 문제 풀이 차근차근 문제에서 주어진 대로 따라가면 된다. 삼항 연산자도 섞어보았다. 코드 전문 C++ HTML 삽입 미리보기할 수 없는 소스 Python HTML 삽입 미리보기할 수 없는 소스 소감
모든 객체지향 언어는 클래스를 만들 때 최상위 클래스를 상속하는 구조로 되어 있다. C++의 경우는 살짝 다른 것으로 알고 있지만 자바는 파이썬과 같이 최상위 클래스를 상속한다. 파이썬에서의 최상위 클래스는 object이다. object 클래스의 내부 속성 알아보기 object 클래스는 스페셜 속성과 스페셜 메소드만으로 구성된다. 파이썬에서 제공하는 기본 클래스들을 원소로 갖는 리스트를 선언해보자. ll = [str, int, list, tuple, type(None), object, type] 여기서 최상위 클래스 object 내의 내장 클래스로 만든 객체를 가진 경우만 추출한다. 제어문에 있는 object.__getattribute__는 점 연산에 해당하는 스페셜 메소드이다. 인자로 클래스나 속성, ..
사용 중인 파이썬의 버전을 정확히 알아내려면 --version 플래그를 이용하면 된다. $ python --version Python 3.10.6 파이썬 3은 보통 python3 명령으로 사용한다. 허나 본문의 예제에서는 정상적으로 파이썬의 버전이 출력되지만 본인의 경우에는 Python이라는 글자만 나오기에 정확한 정보인지는 잘 모르겠다. 파이썬에 내장된 sys모듈 안의 값을 조사해 현재 런타임에 사용 중인 파이썬의 버전을 알아낼 수도 있다. import sys print(sys.version_info, end="\n\n") print(sys.version) >>> sys.version_info(major=3, minor=10, micro=6, releaselevel='final', serial=0) 3..
링크 : https://www.acmicpc.net/problem/2480 2480번: 주사위 세개 1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 같은 눈이 2개 www.acmicpc.net 문제 문제 풀이 주사위가 3개만 주어졌으므로 하나하나 조건을 걸어 풀어주면 좋은 문제다. 코드 전문 C++ HTML 삽입 미리보기할 수 없는 소스 Python HTML 삽입 미리보기할 수 없는 소스 소감
링크 : https://www.acmicpc.net/problem/2525 2525번: 오븐 시계 첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.) www.acmicpc.net 문제 문제 풀이 간단한 연산 문제다. A의 고려사항은 i) 분 단위가 60분을 넘어갔는가? 와 ii) 시간이 24를 넘겼는가? 이다. 그래서 3번째로 입력받은 값인 var가 분 단위이므로 i) 조건을 위해 B와 더해준 후 60으로 나눠 몫만 남기고, ii) 조건을 위해 24로 나눈 나머지를 다시금 A에 저장하도록 했다. B의 고려사항은 i) 60분을 넘어갔는가? 이므로 B와 ..
예약어로 관리되는 객체 대표적으로 아무것도 없는 객체를 나타내는 None은 예약어다. type 클래스로 None을 확인하면 NoneType 클래스인 것을 볼 수 있다. 이 클래스는 하나의 객체만 만들어 사용한다. type(None) [결과] NoneType True/False도 예약어다. 이 예약어들은 내장 클래스 bool로 만들어진 2개의 객체가 할당된다. 참고로 파이썬의 다양한 객체들 (int, float, complex, 문자열, 튜플, 리스트 등등)은 0이거나 없다라는 의미일 때는 False를 반환하고 무엇이라도 존재한다면, 즉 원소가 하나라도 존재한다면 모두 True를 반환한다. 특이하게도 bool 클래스는 int 클래스를 상속한다. bool.__base__ [결과] int 범위를 처리하는 클래..
클래스에 의해 생성된 객체는 항상 유일한 객체를 유지하기 위해 별도의 식별 레퍼런스를 가진다. 같은 객체인지 아닌지 비교할 때 이 레퍼런스를 비교하면 된다! 클래스와 객체의 관계는? 우선 클래스가 설계도이고, 객체는 클래스라는 설계도로 생성된 대상을 뜻한다. 그래서 객체를 클래스의 인스턴스라고도 부른다. 이러한 클래스와 객체의 관계는 어떻게 되어 있을까? 우선 아무것도 하지 않는 클래스를 정의한다. class Klass(object): pass object 클래스를 상속받는다고 표기해주었지만, 상속을 임의로 주지 않아도 object 클래스를 상속한다. 이에 대한 자세한 설명은 아래 링크를 참고하면 좋을 것 같다. https://jh-bk.tistory.com/24 [Python] 클래스가 object를 ..
함수를 정의하는 것은 함수 객체를 만드는 것이다. 클래스를 정의하는 것도 실제 클래스를 만드는 것이다. 파이썬에서 클래스는 객체를 만드는 툴이다! 클래스를 정의하는 문장 클래스를 만드는 이유는 클래스가 관리하는 영역과 객체를 만들어 사용하는 영역을 구분하기 위해서이다. 클래스나 객체는 자신이 사용하는 속성과 메소드를 가질 수 있다. 클래스를 정의하는 기본적인 규칙은 머리부와 몸체부를 선언하는 것이다. class Person(object): pass 객체를 생성할 때는 클래스 이름과 호출 연산자를 사용한다. 객체를 사용하려면 변수에 할당해야 하고 객체가 만들어지면 자신을 생성한 클래스 정보를 __class__ 속성에 보관한다. 이 속성을 조회하면 클래스 정보가 나온다. 현재 출력된 클래스 정보 앞에 __m..
입력 데이터를 처리하는 방식을 이해하는 것은 함수 정의문의 매개변수와 함수 호출의 인자간의 매핑을 이해하는 것과 같다. 파이썬은 이러한 매핑 관계 4가지를 제공한다. 고정 위치 인자와 가변 위치 인자 처리 고정 위치인자 처리 함수를 작성할 때 매개변수에 x, y, z를 이름으로 정의하면 함수를 호출할 때도 3개의 인자를 전달해야 한다. 이런 방식을 고정 위치인자라고 하고, 함수를 호출할 때도 고정으로 인자를 전달해 위치에 맞게 1대1로 매핑해서 처리한다. 함수의 내부 이름공간에 어떻게 매개변수와 인자가 매칭되는지 내장함수 locals를 실행해 알아보자. def func(x, y, z): print(f"내부 이름공간 : {locals()}") return x + y + z func(1, 2, 3) [결과]..