try: print(f"연산결과") except: print("에러 발생") else: print("정상 동작") finally: print("수행 종료") Q) finally는 왜 쓰는걸까? 어차피 오류가 나던, 안나던 실행된다면 try문 바깥쪽에 적어도 되는거 아닌가? A) try나 except에 return문이 있으면 함수 자체가 종료되어 버린다. finally문에서 함수가 끝날 때 처리해야 하는 액션들을 처리하고 리턴하도록 할 수 있다. except에서 오류 종류로 판단하기 except ImportError: # 대응하기 except ValueError: # 대응하기 직접 오류 발생: raise로 오류 발생시키기 raise ValueError("입력값을 다시 확인하세요!") Custom Excep..
def printme(func): def new_function(*args, **kwargs): print("Name:", func.__name__) print("Positional Arguments:", args) print("Keyword Arguments:", kwargs) result = func(*args, **kwargs) print("Result:", result) return result return new_function @printme def add_ints(a, b): return a + b add_ints(1, 2) Name: add_ints Positional Arguments: (1, 2) Keyword Arguments: {} Result: 3
print(print.__doc__) print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False) Prints the values to a stream, or to sys.stdout by default. Optional keyword arguments: file: a file-like object (stream); defaults to the current sys.stdout. sep: string inserted between values, default a space. end: string appended after the last value, default a newline. flush: whether to forcibly flush th..
# Definition for singly-linked list. class ListNode: def __init__(self, x): self.val = x self.next = None class Solution: def isPalindrome(self, head: ListNode) -> bool: rev = None slow = fast = head # 런너를 이용해 역순 연결 리스트 구성 while fast and fast.next: fast = fast.next.next rev, rev.next, slow = slow, rev, slow.next if fast: slow = slow.next # 팰린드롬 여부 확인 while rev and rev.val == slow.val: slow, rev ..
is는 id값을 비교하는 함수 ==은 값을 비교하는 함수
ASCII, Unicode, UTF-8 ASCII: 글자당 1 byte Unicode: 글자당 4 byte UTF-8: 공간 낭비를 막는다. 글자당 1~4byte 사이로 필요한 byte만큼 사용한다. UTF-8이 공간 낭비를 막는 방식 UTF-8이 공간 낭비를 막는 방식에 대해서 살펴보자! 결론적으로 기억할 사실은 UTF-8은 US-ASCII와 호환성을 가졌다는 사실이다. 첫 바이트의 맨 앞 비트가 0이면 1바이트 문자, 10인 경우 특정 문자의 중간 바이트, 110인경우 2바이트, 1110인경우 3바이트, 11110인경우 4바이트 인걸로 문자 바이트의 길이를 인식할 수 있다. ASCII는 128개의 글자가 있다. 그러므로 2^7 -> 7 bit로 표현 가능하다. 1byte에 store 할 수 있는 것이..
파이썬은 원래 동적 타입 언어라서 타입이 없지만... 타입을 명시해서 혼란을 낮추는 방법이 존재한다. 그 중 Generics는 여러 타입을 허용한다. 데이터 형식에 의존하지 않고 인자, 변수 또는 반환값 등이 여러 다른 데이터 타입들을 가질 수 있는 방식을 제네릭이라고 한다. from typing import TypeVar T = TypeVar('T') U = TypeVar('U') def are_equal(a:T, b:U) -> bool: return a == b print(are_equal(10, 10.0)) # True example async def _crawl_and_reduce( self, urls: Iterable[str], parse_fn: Optional[Callable[[str], T]..
import sys sys.executable
파이썬에는 원래 struct가 없다... namedtuple이라는 라이브러리를 사용해서 구현할 수 있었다. from collections import namedtuple MyStruct = namedtuple("MyStruct", "a b c") m = MyStruct("a", "b", "c") ====파이썬 3.7이상이면 dataclass를 사용할 수 있다. 파이썬의 decoration(자바의 annotation같은거) 를 쓰면 된다. from dataclasses import dataclass @dataclass class Product: weight:int = None price:int = None apple = Product() apple.weight = 10
from collections import deque deque = deque(배열) deque.append(원소) : 오른쪽에 삽입 deque.appendleft(원소) : 왼쪽에 삽입 deque.popleft() : 왼쪽 pop deque.pop() : 오른쪽 pop deque.clear() : 삭제 deque.insert(i, 원소) : i번째에 원소 삽입 list()보다는 확실히!! 빠른것을 확인할 수 있다. list도 append, pop, len 다 O(1)이어서 괜찮을 줄 알았는데...😢 * list는 끝 원소의 pop만 O(1)이고 pop(0)은 O(N)이라고 한다 * [시간복잡도] https://wiki.python.org/moin/TimeComplexity https://j-ungry...
decimal.getcontext().prec = 50 decimal.getcontext().rounding = decimal.ROUND_HALF_UP if value decimal.Decimal(-1e-9): pi = Decimal('3.14159265358979323846264338327950288419716939937510') def sin(x): x = x % (2 * pi) getcontext().prec += 2 i, lasts, s, fact, num, sign = 1, 0, x, 1, x, 1 while s != lasts: lasts = s i += 2 fact *= i * (i - 1) num *= x * x sign *=..
m_bin = int(input(), 2) print(oct(m_bin)[2:])
https://gmnam.tistory.com/226
d = sorted(arr, key = lambda x : x[1])
정의를 알고싶다면 >> https://sweetdev.tistory.com/126 구현 heapq는 내장 모듈이어서 바로 사용 가능하다. 문제는 heapq에서 제공하는 힙은 최소힙이여서, 최대 힙으로 쓰려면 살짝의 트릭을 써야 한다. PriorityQueue 구현하기 파이썬의 우선순위큐 구현은 PriorityQueue대신 heapq모듈을 쓰는것이 좋다. 파이썬의 PriorityQueue 내부는 결국 heapq라서 heapq를 쓰는것이 훨씬 빠르기 때문이다! [참고] https://littlefoxdiary.tistory.com/3
print(*list)
안타깝게도 바로 a몇개, b몇개 알려주는 함수는 없지만 구할 수는 있다!! string = input() Alphabet = 'abcdefghijklmnopqrstuvwxyz' pt_freq = [0] * 26 for ch in string: if ch in Alphabet: idx = Alphabet.find(ch) pt_freq[idx] += 1 for i in range(0,26): print(pt_freq[i], end=" ") 스트링 한글자씩 돌면서, 알파벳 집합에 대해서 index를 찾아서 그 값을 추가해준다.