Python/이것저것 파이썬
-
파이썬 초기 설정 저장 방식Python/이것저것 파이썬 2022. 10. 25. 13:20
저는 프로그램의 초기 설정들은 저장할 때, pickle을 많이 씁니다. 바이너리 파일이라 유저들이 수정하기 어렵고, 코드는 간결하죠. https://scshim.tistory.com/614 하지만 유저들이 수정하도록 열어두어야할 설정도 있습니다. 이럴 경우에는 ini, json, yaml, xml, toml, py 등을 사용합니다. 가장 많이 알려진 ini 같은 경우는 공식 문서(configparser - 구성 파일 구문 분석기)를 보는 것이 가장 좋습니다. https://docs.python.org/ko/3/library/configparser.html 전체적으론 이런 글을 참고해도 좋겠죠. https://emilkwak.github.io/python-setting-file-ext xml은 공식 문서를..
-
100명의 죄수 문제Python/이것저것 파이썬 2022. 10. 17. 12:38
https://www.youtube.com/watch?v=PE4vLbyOgw0 https://www.youtube.com/watch?v=OIi7FCmTtxc from random import shuffle def find_num(): # 죄수 번호가 들어갈 박스 boxes = {} # 죄수 번호(1~100)를 셔플. nums = [i for i in range(1, 101)] shuffle(nums) # 셔플된 죄수 번호를 하나씩 뽑아 박스에 넣는다. for i, num in enumerate(nums): boxes[i + 1] = num # 각 죄수가 방에 들어가 자신의 번호가 매겨진 박스부터 열어본다. for prisoner in range(1, 101): open_num = prisoner for ..
-
파이썬으로 버전 비교Python/이것저것 파이썬 2022. 10. 6. 13:02
버전을 비교하려면, 어떻게 하는 것이 깔끔할까요? '1.9.1' > '1.10' # True 버전은 숫자와 점으로 구성된 문자열입니다. 이런 코드가 떠오릅니다만.. import doctest def to_int_tuple(a: str) -> tuple[int]: return tuple(int(each) for each in a.split('.')) def compare(a: str, b: str) -> str: """ >>> compare('1.19', '1.10.1') '>' >>> compare('1.1', '1.10.1') '' """ a_tuple, b_tuple = to_int_tuple(a), to_int_tuple(b) if a_tuple == b_tuple: return '==' elif ..
-
파이썬으로 WOL 매직패킷 쏘기Python/이것저것 파이썬 2022. 9. 16. 08:13
import socket import struct ip = '192.168.0.255' mac = '00-11-22-33-44-55' mac_split = mac.split('-') address = struct.pack( 'BBBBBB', int(mac_split[0], 16), int(mac_split[1], 16), int(mac_split[2], 16), int(mac_split[3], 16), int(mac_split[4], 16), int(mac_split[5], 16), ) magic = b'\xFF' * 6 + address * 16 sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.setsockopt(socket.SOL_SOCKE..
-
[파이썬] count, Counter with dictionaryPython/이것저것 파이썬 2022. 8. 30. 07:31
list.count() # list.count() 메서드를 이용. some_list = ['a', 'b', 'c', 'b', 'd', 'm', 'n', 'n'] duplicates = set() for each in set(some_list): if some_list.count(each) > 1: duplicates.add(each) print(duplicates) # 컴프리헨션으로 정리 duplicates = set(each for each in set(some_list) if some_list.count(each) > 1) print(duplicates) dictionary # 딕셔너리를 이용. some_list = ['a', 'b', 'c', 'b', 'd', 'm', 'n', 'n'] counte..
-
[파이썬] by value, by referencePython/이것저것 파이썬 2022. 8. 24. 14:55
1. by value, by reference 재귀를 이용해 순열을 만들겠습니다. 문자열을 이용하면 잘 작동합니다. 파이썬에서 문자열은 불변(immutable)입니다. def recursive(result, visited): if len(result) == 3: print(result) return for each in 'abc': if each not in visited: visited.add(each) recursive(result + each, visited) visited.remove(each) # 순열~! recursive('', set()) # abc # acb # bac # bca # cab # cba 출처: https://comdoc.tistory.com/entry/파이썬-순열과-조합 [C..
-
파이썬을 추천합니다.Python/이것저것 파이썬 2022. 8. 22. 17:32
추천의 이유 1. 재미있습니다. 파이썬으로 알고리듬 문제를 풀면서.. 처음 프로그래밍 언어를 배웠을 때의 즐거움을 다시 느낄 수 있었습니다. 2. 넓은 응용 범위 파이썬으로 할 수 있는 것들 웹서버, 웹 크롤링, GUI, DB 응용, 해킹, 사무자동화... 심지어 인공지능도 파이썬으로 많이 하죠. 금융권에서도 파이썬을 많이 씁니다. 퀀트 투자법에도 파이썬을 많이 사용하죠. 상용 게임에도 사용되는데 연산이 필요한 부분에 사용되는 건 아니고, 파이썬은 느립니다. 연산이 필요한 부분은 C++을 많이 사용합니다. 연산 성능이 필요 없거나, 가볍게 자주 변경해야 하는 부분 등에 많이 사용됩니다. 물론 고전 2D 자작 게임 정도는 내장 라이브러리로 끝낼 수 있습니다. 온라인 게임 서버에도 사용할 수 있습니다. '듀..
-
[파이썬] 전략 패턴, 의존성 주입Python/이것저것 파이썬 2022. 8. 16. 10:26
0. '기차는 레일로 이동하고, 버스는 차로로 이동한다.' 는 결과를 만들기 위해 다음과 같이 코드를 작성했습니다. from abc import ABCMeta, abstractmethod class Vehicle(metaclass=ABCMeta): @abstractmethod def move(self): pass class Train(Vehicle): def move(self): print("레일로 이동") class Bus(Vehicle): def move(self): print("차로로 이동") train = Train() bus = Bus() train.move() bus.move() 그런데 버스가 하늘을 나는 시대가 된다면... 다음과 같이 수정을 해야겠죠? class Bus(Transport):..