python | 10진법을 2진법, 8진법, 16진법으로, n진법을 10진법으로 바꾸기
·
TIL/python
10진법 수를 2진법, 8진법, 16진법으로 나타내는 방법과 n진법 수를 10진법 수로 바꾸는 방법을 정리해보려 한다. 먼저, 2진법, 8진법, 16진법에 대해 간단하게 살펴보면 다음과 같다. 2진법은 0과 1로만 수를 나타내는 방법이다. 2진법으로 나타낸 수에서 각 자리는 뒤에서부터 $2^0$, $2^1$, $2^2$, $2^3$... 의 개수로 생각하면 쉽게 이해할 수 있다. 0 = 0 = $(0 \times 2^0)$ 1 = 1 = $(1 \times 2^0)$ 2 = 10 = $(1 \times 2^1 + 0 \times 2^0)$ 3 = 11 = $(1 \times 2^1 + 1 \times 2^0)$ 4 = 100 = $(1 \times 2^2 + 0 \times 2^1 + 0 \times 2..
python | TypeError: 'str' object does not support item assignment
·
TIL/오류해결
TypeError: 'str' object does not support item assignment string은 아이템 수정이 불가능하다는 뜻이다. 문자열은 인덱스로 접근도 가능하고 리스트와 같이 슬라이싱도 가능하다. 그럼 text의 1번 요소인 e를 a로 바꿔 'hallo'라는 결과를 얻을 수 있을까? 불가능하다. 도대체 assignment의 뜻이 뭐길래 이런 에러가 발생하는 것일까. 궁금해서 직접 검색해 보았다. 에러 메시지에서 assignment는 2번 '배정, 배치'를 의미하는 것으로 보인다. 즉, TypeError: 'str' object does not support item assignment = 문자열에서는 아이템 배치를 지원하지 않는다. 문자열 수정을 위해 리스트처럼 인덱스로 접근은 ..
python | UnboundLocalError: local variable referenced before assignment
·
TIL/오류해결
UnboundLocalError가 발생하는 이유는 함수 밖에서 선언한 변수를 함수 내에서 사용했기 때문이다. 함수 내에서 사용했다는 의미가 무엇이냐 하면, 함수 func() 밖에서 x라는 변수를 선언하고 1을 변수 x의 값으로 부여했다. 그다음 함수를 정의하는 과정에서 함수 밖에 위치한 변수인 x를 사용하였다. line by line으로 실행되니 먼저 실행되는 x=1 다음에 함수를 정의해 주었으니 문제 될 것이 없지 않느냐라고 생각할 수도 있다. 하지만 에러메시지를 보면 이 말은 잘못됨을 알 수 있다. local variable 'x' referenced before assignment = 함수 내에서 값을 할당하려고 보니 '지역변수' x가 참조되었습니다. 이런 의미이다. 그러므로 x는 먼저 작성된 코드..
python | 파이썬 find() 함수 사용 및 index()와 차이점
·
TIL/python
파이썬에서 특정 문자열의 위치, 인덱스 번호를 찾고자 할 때 find() 함수를 사용할 수 있다. 예를 들어, '123456'이라는 문자열에서 '3'의 인덱스 번호를 찾으려면 찾고자 하는 문자열을 매개변수로 전달하는 find(찾을 문자열)와 같이 작성해 주면 된다. 3번 인덱스부터 찾고자 하면 find(찾을 문자열, 시작 위치)로 작성해 주면 된다. 0번 인덱스부터 3번 인덱스 사이에서 찾고자 하면 find(찾을 문자열, 시작 위치, 종료 위치)로 작성해주면 된다. 문장에서 단어를 찾는 예를 살펴보자. 'hello my name is'에서 'name'의 위치를 찾으면 'name'이 위치하는 9번 인덱스를 리턴한다. 이는 'name'의 첫 번째 글자인 'n'의 인덱스 번호이다. 만약, 존재하지 않는 값을 ..
python | 파이썬에서 순열과 조합 사용하기
·
TIL/python
파이썬에서 순열과 조합을 사용할 수 있는 두 가지 방법을 정리해보려 한다. 먼저, 순열과 조합의 정의를 살펴보면 다음과 같다 순열(permutation): n개 중 r개를 선택하여 순서대로 정렬 ex) 1, 2, 3에서 2개를 선택하여 순서대로 정렬 → (1, 2), (2, 3), (3, 1) (1, 2)와 (2, 1)을 같은 것으로 봄 $_nP_r=\frac{(n-r)!}{n!}$ 조합(combination): n개 중 r개를 선택 (순서 X) ex) 1, 2, 3 에서 2개를 선택 → (1, 2), (2, 1), (2, 3), (3, 2), (1, 3), (3, 1) (1, 2)와 (2, 1)을 다른 것으로 봄 $_nC_r=\frac{(n!}{(n-r)! r!}$ 1) math 라이브러리에 있는 pe..
python | module 'math' has no attribute 'lcm'
·
TIL/오류해결
프로그래머스 문제를 푸는 과정에서 최소공배수가 필요하여 math.lcm을 사용했으나 attributeerror: module 'math' has no attribute 'lcm' 와 같은 오류가 발생하였다. lcm은 python 3.9 버전부터 사용이 가능한 메소드이기 때문에 이럴 때에는 다른 방법으로 최소공배수를 구해야 한다. 두 수가 주어졌을 때 최소공배수는 두 수의 곱을 최대공약수로 나누어 구할 수 있다. $$ lcm(a, b) = \frac{a \times b}{gcd(a, b)} $$ 예를 들어, 6과 4의 최소공배수를 구하면 다음과 같다. 1) 두 수의 곱 $ 6 \times 4 = 24 $ 2) 두 수의 최대공약수 $ gcd(6, 4) = 2 $ 3) 두 수의 최소공배수 $ \frac{24}..