매트랩의 fprintf와 파이썬의 f-string 문법은 닮은 부분이 많다. 사실 거의 같다고 봐도 무방할 정도이다. f-string 문법이 제대로 정리된 페이지가 의외로 없는 듯하여, fprintf와 비교할 겸 만들어보았다. 아래에서 프롬프트가 >>인 것은 매트랩, >>>인 것은 파이썬이다. f-string 문법은 본 문서에 소개한 것 외에도 더 있는데, fprintf와 1:1로 매칭되는 것들만 본 문서에 정리하였다. 1. 그냥 출력 >> disp(256) 256 >>> print(256) 256 2. 정수 >> fprintf('%d\n', 256) %10진수 256 >> fprintf('%o\n', 256) %8진수 400 >> fprintf('%x\n', 256) %16진수 100 >>> print..
후... 힘들었습니다. - 게으른
참고한 곳: 스택오버플로우 리스트 컴프리헨션(LC)에 if만 있을 때는 왜 if가 맨 뒤로 가고 [i**2 for i in range(10) if i%3 == 0] if와 else가 모두 쓰일 때에는 왜 if-else가 for보다 앞에 올까? [i**2 if i%3 == 0 else i*2 for i in range(10)] 한줄요약: if만 있는 것은 filter이고, if-else는 3항 연산자이기 때문이다. if만 있는 경우, if는 filter의 역할이다. 즉, filter를 통과한 것만 살아남는다. LC의 문법은 filter를 뒤에 쓴다. [ for in if ] 실제로 공식 문서를 보면 LC 뒤에 if가 추가될 수 있다고만 나오지, else는 언급되지 않는다. if-else는 그 자체로 하나의..
본 글의 코드는 여기에서 보실 수 있습니다. Q. 0부터 99까지 정수의 제곱수로 구성된 리스트를 생성하시오. A. 방법은 여러 가지가 있다. 우선 range 객체와 함수를 하나 만들어놓고 시작한다. def sq(x): return x**2 r = range(100) 처음 배우는 방법은 아래와 같이 리스트에 append를 하는 방식이다. # 쌩 for문 사용 l = [] for i in r: l.append(i**2) 리스트 컴프리헨션을 사용하면 훨씬 간단해진다. # list comprehension l = [i**2 for i in r] 만들어둔 함수 sq를 쓸 수도 있다. # 직접 연산 대신 함수 사용 l = [sq(i) for i in r] map은 이터러블의 각 요소에 함수를 적용시킬 수 있다. ..
2022년 추석 연휴 동안 케라스 창시자에게 배우는 딥러닝(aka 케창딥) 2판을 빠르게 1회독 했습니다. 원래는 개발자를 위한 머신러닝&딥러닝을 볼 계획이었는데, 케창딥을 읽다보니 재밌어서 쭉 읽어버렸습니다. (전자책이라 가방이 가벼워진 것도 한몫) 아래는 초간단 리뷰입니다. 수준 및 내용 - 머신러닝 잘 모르신다면, 혼공머신 먼저 보고 케창딥 보시길 권장합니다. - 책이 다루는 범위가 넓습니다. 기초부터 최근 기술까지 섭렵합니다. - 대신 각 기술을 아주 깊게 설명하지는 않습니다. - 1판에 비해 꽤 많은 내용이 새로 들어왔습니다. - 9장(컴퓨터 비전), 10장(시계열), 11장(텍스트)입니다. 11장은 트랜스포머도 설명합니다. - 설명이 아주 친절한 편은 아닙니다. - 딥러닝의 연산 과정 등에 대..
원문: Learn Python in 21 days!!!!11 (what a lie) 발번역입니다. 오역이 있다면 알려주세요. 내가 처음 산 프로그래밍 책은 “C언어 21일 완성”이었다. MS-DOS용 볼랜드 C++ 컴파일러 3.1(!)이 담긴 CD가 동봉된 2kg짜리 책이었다. 프로그래머를 직업으로 꿈꾸던 그 시절 “21일 완성”은 그야말로 대유행이었다. 단 21일이면 완성이라니! 그리고 21년이 지난 지금까지도 완성하지 못했다. 당시에는 그 책이 C 문법 참고서임을 몰랐으니까. 아무 짝에도 쓸모 없는. 프로그래밍 언어를 배우는 데에는 몇 달 혹은 몇 년의 노력이 필요하다. 초보자를 21일만에 시니어로 만들어주는 명약 따위는 존재하지 않는다. 그렇다고 실망할 필요는 없다. 그게 가능했으면 프로그래머는 이..
세줄요약 증상: matplotlib.pyplot.bar()로 막대 그래프를 그릴 때 막대가 사라지거나 막대 사이의 틈이 없어지는 현상이 있음 원인: bar()는 막대의 위치를 1픽셀 단위로만 계산하는데, 막대 또는 틈이 너무 얇으면 무시하고 그리지 않음 해결책: bar()의 파라미터 중 width를 조절하고, 필요에 따라 figsize를 바꾸거나 edgecolor를 설정하거나 Figure 창의 크기를 조절 일러두기 본 글의 코드 중 캡쳐한 것은 코랩, 코드 블록은 vscode 또는 매트랩에서 실행한 코드입니다. 코드는 모두 여기에서 보실 수 있습니다. 감사의 글 본 글의 아이디어를 주신 페가님께 감사 말씀 드립니다. 이상한 막대 그래프 matplotlib의 bar()를 이용하여 간단히 막대 그래프를 그려..
클래스의 필요성을 어떻게 설명하면 쉽게 와닿을까 고민하다가 예시를 만들어보았습니다. 우리의 민속놀이(?)인 스타크래프트의 대표 유닛 마린을 파이썬으로 구현해보겠습니다. 전부 다 구현할 수는 없으니, 아주 간단히 체력, 공격력, 방어력 정도만 만들어보죠. 마린 2-3마리를 만들어서 서로 공격을 시킬 겁니다. 우선 마린을 만들고 공격 함수 shoot을 만들었습니다. marine1 = {'unit': 'marine', 'hp': 40, 'attack': 6, 'armor': 0} marine2 = {'unit': 'marine', 'hp': 40, 'attack': 6, 'armor': 0} def shoot(me, enemy): enemy['hp'] -= me['attack'] - enemy['armor']..