파이선등 대부분의 프로그래밍 언어는 숫자를 다루는 방식은 정수(integer)와 부동소수점 수(floating point number = float)로 구분하여 처리한다.
소수를 표현하는 방식은 고정소수점 수(fixed point number)와 부동소수점 수가 있다.
1.0을 32bit의 고정소수점 수로 표현하기
1.0을 32bit의 부동소수점 수로 표현하기
프로그래밍에서 중간 계산 값을 저장해놓고, 반복적으로 다시 계산하는 대신 저장된 값을 먼저 확인하여 사용하는 방식으로, 계산 시간을 줄이는 프로그래밍 기법이다.
피보나치 함수 예제
memory = {1: 1, 2: 1}
def fibonacci(n):
if n in memory:
number = memory[n] #저장된 값이 있는지 확인
else:
number = fibonacci(n-1) + fibonacci(n-2) #재귀적 호출
memory[n] = number #다시 계산되어지는 부분을 저장
return number
print(fibonacci(10)) #55
print(memory) # {1: 1, 2: 1, 3: 2, 4: 3, 5: 5, 6: 8, 7: 13, 8: 21, 9: 34, 10: 55}
C언어에서 사용하는 &&, ||, ~ 논리연산자가 Python에서는 and, or , not으로 써야 한다는 것이 아직 익숙하지 않았는데 오늘 나온 퀴즈로 확실히 기억에 남을 듯 싶다.
그리고 기본적인 것인데 정의되지 않은 변수를 논리연산자에 사용해도 안된다.
Python에서 &와 |는 비트연산자로 사용한다.
print(1 & 0) → 0
print(1 | 0) → 1
==, != 를 숫자와 문자열비교에 사용할 수 있다.
is, is not은 객체를 비교할 때 사용한다. 값을 비교할 때는 사용하지 않는 것이 좋다.
1 == 1.0 은 True 이지만 1 is 1.0은 False이다.
값 in 시퀀스객체 # 시퀀스 객체에 특정 값이 있는지 확인
값 not in 시퀀스객체 # 시퀀스 객체에 특정 값이 없는지 확인
시퀀스객체1 + 시퀀스객체2 # 시퀀스 객체를 서로 연결하여 새 시퀀스 객체를 만듦
시퀀스객체 * 정수 # 시퀀스 객체를 특정 횟수만큼 반복하여 새 시퀀스 객체를 만듦
정수 * 시퀀스객체 # 시퀀스 객체를 특정 횟수만큼 반복하여 새 시퀀스 객체를 만듦
len(시퀀스객체) # 시퀀스 객체의 요소 개수(길이) 구하기
시퀀스객체[인덱스] # 시퀀스 객체의 요소에 접근
시퀀스객체[0] # 시퀀스 객체의 인덱스는 0부터 시작하므로 첫 번째 요소
시퀀스객체[-음수] # 인덱스를 음수로 지정하면 뒤에서부터 요소에 접근, -1은 뒤에서 첫 번째
시퀀스객체[인덱스] = 값 # 시퀀스 객체의 요소에 값 저장
del 시퀀스객체[인덱스] # 시퀀스 객체의 요소를 삭제