Python 59

[Python] getattr, setattr, hasattr, delattr 함수 사용법 정리

이번에는 클래스의 attribution(속성)에 접근하고, 수정하는 데 사용되는 내장함수에 대해 소개하려고 합니다. 왜 사용하는가 이 함수들을 통해 객체의 속성을 동적으로 조작할 때 유용하게 사용합니다. 특히 객체 지향 프로그래밍에서 이러한 기능은 유연성을 제공하여 동적으로 수정하는데 매우 큰 도움이 되는 함수들입니다. getattr getattr 함수는 객체의 특정 속성 값을 가져옵니다. 만약 그 속성이 존재하지 않을 경우 선택적으로 기본값(default)을 반환할 수 있습니다. # 사용법 getattr(object, name[, default]) 속성이 존재하는 경우 class Person: def __init__(self, name, age): self.name = name self.age = ag..

Coding/Python 2024.01.18

[Python] assert, 가정 설정문 사용법 정리

이번 포스팅에서는 디버깅에 자주 사용되는 가정 설정문(assert)에 대해 작성해보려고 합니다. assert는 왜 사용하는가? 가정 설정문(assert)은 파이썬에서 디버깅을 목적으로 사용되는 구문입니다. 이는 프로그램이 특정한 조건을 만족하는지 확인하며, 그렇지 않을 경우 프로그램을 중단시키며 오류 메시지를 출력합니다. 이때 오류 메시지는 직접 설정할 수 있습니다. 주로 코드가 잘 작동하는지 검증하거나, 개발 과정에서 오류를 발견하기 위해 사용됩니다. assert문 기본적인 형식 assert 조건, 오류 메세지 조건 : 검사하고자 하는 조건, 조건이 True인 경우, 아무 일도 일어나지 않고 코드는 진행됩니다. 오류 메세지 : 조건이 False인 경우, 표시될 메시지입니다. 이 메시지는 작성할 수 있으..

Coding/Python 2024.01.17

[Python] Jupyter Notebook 가상환경 커널 추가 및 삭제

이번에는 Jupyter Notebook에 가상환경을 추가하고 삭제하는 방법에 대해 소개해드리겠습니다. Jupyter Notebook에서 다음과 같이 Terminal창에 접속합니다. 가상환경 생성 python -m venv myvenv python3 또는 python을 이용하며 myvenv(가상환경)을 생성합니다. 가상환경 활성화 source myvenv/bin/activate Linux환경에서 다음과 같은 명령어를 통해 myvenv(가상환경)을 실행합니다. ipykernel 설치 pip install ipykernel 커널을 추가하기 위해 ipykernel을 설치합니다. 커널 추가하기 python -m ipykernel install --user --name=myvenv myvenv를 ipykernel을..

Coding/Python 2024.01.11

[Python] *args 와 **kwargs의 차이

이번 포스팅은 함수의 매개변수에서 입력받는 *args와 **kwargs에 대해 알아보겠습니다. 아마 인공지능이나 여러 코드를 보면 다음과 같은 코드를 마주칠 일이 있을 겁니다. def args_and_kwargs(*args, **kwargs): 다음과 같이 *와 **로 인자를 받는 함수를 보셨을 겁니다. 이 함수의 차이에 대해서 설명해 드리겠습니다. *args 가변 위치 인자(Variable Positional Arguments) * args는 함수에 가변적인 개수의 비키워드 인자를 전달할 때 사용 인자들을 튜플의 형태로 입력을 받음 함수를 정의하면서 비키워드 인자의 수를 모를 때 사용 위의 말이 어렵다면 예시를 통해 설명해 드리겠습니다. def print_args(*args): print(type(ar..

Coding/Python 2024.01.03

[Python] 문자열 템플릿(string Template)

파이썬에서 유용한 string의 Template 라이브러리에 대해 소개하고자 합니다. 파이썬을 조금이라도 다뤄보신 분이라면 문자열 포매팅이 얼마나 자주 사용되는지 아실 텐데요, string.Template는 이러한 문자열 포매팅을 더 안전하고 명확하게 해주는 훌륭한 도구입니다. 그중에서 함수 subtitute에 대해 소개해드리려고 합니다. 선언 방법 from string import Template template = Template(str) # Template에 추가할 문자열 대체할 문자열 표시하는 방법 첫번째 방법 : $ 와 공백을 사용하여 표시 from string import Template text = "Hello, my name is $name and my hobby is $hobby" # n..

Coding/Python 2023.12.30

[Python] 가상환경 생성과 삭제, 활성화 및 비활성화(MacOS, Windows)

Window와 MacOS 환경에서 가상환경을 생성하고 활성화 및 비활성화하는 방법에 대해 소개해드리려고 합니다. 가상환경 생성 처음에 가상환경을 생성합니다. MacOS # python3 -m venv ./"생성하려는 가상환경 이름" $ python3 -m venv ./venv Windows # python -m venv "생성하려는 가상환경 이름" >python -m venv venv 가상환경 활성화 가상환경을 활성화합니다. MacOS # source "생성한 가상환경 이름"/bin/activate $ source venv/bin/activate Windows # cd "생성한 가상환경 이름"/Scripts >cd venv/Scripts >activate 가상환경 비활성화 가상환경을 비활성화하는 명령어는..

Coding/Python 2023.12.27

[Numpy] Numpy 메서드 ( argmin, argmax, cumsum, cumprod)

파이썬의 통계를 위한 메서드 배열 전체 혹은 배열의 한 축에 속하는 자료에서 통계를 계산하는 수학 함수 중 4개를 소개한다. argmax : 최대 원소의 인덱스값 argmin : 최소 원소의 인덱스값 cumsum : 0부터 시작하는 각 원소의 누적 합 cumprod : 1부터 시작하는 각 원소의 누적 곱 4개의 함수는 모두 axis라는 매개변수를 갖는다. (2차원 기준으로 설명) axis = 0 : 행을 의미하며, 계산은 행의 방향대로 진행 aixs = 1 : 열을 의미하며, 계산은 열의 방향대로 진행 np.argmin np.argmax(data, axis(default=0)) : 최대 원소의 인덱스 값 반환 >>> import numpy as np >>> data = np.array([[0,3,5],[..

Coding/Numpy 2023.12.21

[Numpy] Numpy란? (ndarray, ndim, shape)

Numpy란? Numerical Python의 준말인 넘파이$^{Numpy}$는 파이썬에서 산술 연산, 수치해석과 같은 수학 및 과학 연산을 위한 파이썬 패키지이다. 다차원 배열을 쉽고 효율적으로 처리하며 Pandas와 연동하여 자주 사용한다. 핵심 기능은 ndarray라고 하는 N차원의 객체 배열이다. 왜 사용하는가? 파이썬의 기본 라이브러리보다 매우 매우 빠르고 효율적이다, 배열 내부의 원소의 값들을 브로드캐스팅할 때, 파이썬은 반복문을 사용하지만, 넘파이는 한 번에 가능하기에 빠르다. Numpy 설치 $ pip install numpy ndarray, 다차원 배열 객체 생성 가장 기본적으로 생성하는 방법 >>> import numpy as np >>> data =np.array([[1.5, -0.1..

Coding/Numpy 2023.12.20

[Python] for else구문과 while else구문 정리

for-else구문 else구문이 실행된 경우 for구문 내부의 break를 실행되지 않고, for구문이 종료된 경우 else구문을 실행합니다. for i in range(1,5): if i == 5: break print(i) else: print("break 실행되지 않았으며, else가 실행되었음") # 실행결과 # 1 # 2 # 3 # 4 # break 실행되지 않았으며, else가 실행되었음 else구문이 실행되지 않은경우 for구문 내부의 break를 실행되었으며, else구문이 실행되지 않습니다. for i in range(1,5): if i == 3: break print(i) else: print("break 실행되지 않았으며, else가 실행되었음") # 실행결과 # 1 # 2 whil..

Coding/Python 2023.11.30

[BOJ] [Python] 1107번: 리모컨

문제 수빈이는 TV를 보고 있다. 수빈이는 채널을 돌리려고 했지만, 버튼을 너무 세게 누르는 바람에, 일부 숫자 버튼이 고장 났다. 리모컨에는 버튼이 0부터 9까지 숫자, +와 -가 있다. +를 누르면 현재 보고 있는 채널에서 +1된 채널로 이동하고, -를 누르면 -1된 채널로 이동한다. 채널 0에서 -를 누른 경우에는 채널이 변하지 않고, 채널은 무한대만큼 있다. 수빈이가 지금 이동하려고 하는 채널은 N이다. 어떤 버튼이 고장 났는지 주어졌을 때, 채널 N으로 이동하기 위해서 버튼을 최소 몇 번 눌러야 하는지 구하는 프로그램을 작성하시오. 수빈이가 지금 보고 있는 채널은 100번이다. 입력 더보기 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장..

Algorithm/BOJ 2023.11.30