Python 혼공노트
- 혼자 공부하는 파이썬(개정판) 청강하며... (그외 파이썬 강의도 …)
알아두면 쓸데 있는 파이썬으로 구현된 함수들:
삼각형의넓이
1 / 2 * base * hight
pi = 3.141592
원의둘레:
length = 2 * pi * radius
원의넓이:
square = pi * radius * radius
square = pi * (diameter / 2) (diameter / 2)
호의길이
length = 2 * pi * radius * 중심각(x) / 360
부채꼴의넓이
square = pi * radius * radius * 중심각(x) / 360
피타고라스의 정리 (밑변: a , 높이: b , 빗변: c / c ** 2 = a ** 2 + b ** 2 )
a = ( c ** 2 - b ** 2 ) ** ( 1 / 2 )
b = ( c ** 2 - a ** 2 ) ** ( 1 / 2 )
c = ( a ** 2 + b ** 2 ) ** ( 1 / 2 )
등차로 증가하는 1번째 부터 10번째까지 포함된 리스트:
등차수열
a = [None] # Array index와 값의 정렬을 위해 첫 항을 의미없는 것으로 채움
for n in range(1, 10+1):
a_n = 2 * n - 1
a.append(a_n)
print(a)
점화식: 이전 항을 기반으로 다음항을 얻음
a = [None] # Array index와 값의 정렬을 위해 첫 항을 의미없는 것으로 채움
for n in range(1, 10+1):
if n == 1:
a_n = 1
else:
a_n = a[n-1] + 2
a.append(a_n)
print(a)
Note. append()는 처리에 부하를 주어 처리량이 많을 수록 효율이 낮다.
list 초기 생성 시, 최대치를 지정하여 생성하면 일부 개선할 수 있다.
N = 10
a = [None] * (N+1) # None 으로 채워진 list 생성. 참고로, 첫 항을 None으로 남겨두기 위해 필요 수+1을 함.
for n in range(1, N+1):
if n == 1:
a[1] = 1
else:
a[n] = a[n-1] + 2
print(a)
피보나치수열 :
N = 10
a = [None] * (N+1) # None 으로 채워진 list 생성. 참고로, 첫 항을 None으로 남겨두기 위해 필요 수+1을 함.
for n in range(1, N+1):
if n == 1 or n == 2:
a[n] = 1
else:
a[n] = a[n-1] + a[n-2]
print(a)
재귀함수:
cal_result = {1: 1, 2: 1}
def f(n):
if n in cal_result:
return cal_result[n]
temp_cal = f(n - 1) + f(n - 2)
cal_result[n] = temp_cal
return cal_result
# return cal_result[n] := f(n - 1) + f(n - 2) # else 구문을 최신 python에서 축약할 수 있음
팩토리얼 연산: n! = n * (n-1) * (n-2) * ... * 1
반복문:
def factorial(n):
output = 1
for i in range(1, n+1):
output *= i
return output
재귀함수: 수열의 점화식 이용(이웃한 항의 관계를 통해 수열을 나타내는 것)
팩토리얼 점화식
1! = 1
(n이 2 이상의 수일때) n! = n * (n-1)!
def factorial(n):
if n == 1:
return 1
elif n >= 2:
return n * factorial(n - 1)
bmi = 몸무게 / ( 키 / 100 ) ** 2
하노이탑(Tower of Hanoi)
- 한 번에 한 개의 원판만 움직일 수 있음
- 큰 원판이 작은 원판 위에 있을 수 없음
카운터 = 0
def 하노이탑(원판수, 시작기둥, 대상기둥, 보조기둥):
global 카운터
if 원판수 == 1:
print(시작기둥, "->", 대상기둥)
카운터 += 1
else:
하노이탑(원판수 - 1, 시작기둥, 보조기둥, 대상기둥)
print(시작기둥, "->", 대상기둥)
카운터 += 1
하노이탑(원판수 - 1, 보조기둥, 대상기둥, 시작기둥)
원판수 = int(input("원판 수: "))
하노이탑(원판개수, "A", "B", "C")
print(카운터)
# 하노이탑은 ( 2 ** n ) - 1 횟수 이동이 필요함
# print((2 ** 원판수) - 1)
Appz Knowledge/Python
Python 혼공노트 - 기초 함수 몇 가지...
반응형