* 기존에 알거나 쉽게 이해된 내용은 가볍게 넘어갑니다
LMS(파이썬 기초)
함수
변수
제어문(if, while, for)
자료형(str, int, float, bool, None, list, tuple, dict)
재귀함수의 의미
피보나치수열 함수(함수 내 무한 계산 & 함수 종료 시 증발)
피보나치수열 함수(함수 밖 저장으로 빠르게)
풀잎스쿨(if문 & for문으로 구구단 넣기, 별찍기)
구구단 넣기
별찍기
scope : global scope vs local scope
# 예시 코드
name = "이든" # variable in global scope
def change_name():
name = "이삭" # variable in local scope
# 함수 내에서만 영향을 끼침
change_name()
>>> # 출력값 없음
print(name) # global scope의 variable 호출
>>> "이든"
arguments and parameters
# 예시코드
# 1) 인자값이 없는데 넣었을 때
def say_hi():
print("hi")
say_hi("DJ")
>>> TypeError: say_hi() takes 0 positional arguments but 1 was given
# 2) 인자값 넣어야 하는데 안 넣었을 때
def say_hi_to(name):
print("Hi", name)
say_hi_to():
>>> TypeError: say_hi() missing 1 required positional argument: 'name'
# 3) 인자값 없어도 오류 안 나게 default 값을 파라미터에 넣어주기
def say_hi_to(name="내사랑"):
print("Hi", name)
say_hi_to()
>>> Hi 내사랑
definition of keyword argument
# 예시코드
def couple_names(name1, name2):
print(name1, name2)
couple_names("DJ", "JM")
>>> DJ JM
couple_names(name2="JM", name1="DJ")
>>> DJ JM
couple_names(wrong_name="DJ", name2="JM")
>>> TypeError: couple_names() got an unexpected keyword argument 'wrong_name'
multiple arguments and arguments' order
: default argument should follow non-default argument(arg1, arg2= ...). Otherwise, it'be difficult to guess what parameter the missing value is for
# 예시코드
def say_hi_couple_default_wrong(name1='nobody', name2):
print(name1 + ', ' + name2 + ' 안녕!')
>>> SyntaxError: non-default argument follows default argumen
difference between the returning value of print(), and the value of return in the function definition
# 예시코드
def add(number1, number2):
print(number1 + number2)
add(1,2)
>>> 3
print(add(1,2) + 3) # add()는 return value가 없음
>>> TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
# return value를 갖게 하려면
def add(number1, number2):
print(number1 + number2)
return number1 + number2
부동소수점의 의미
참고 : 부동소수점 코딩 설명
: 나만의 정리로 풀어 쓰자면,
1) 일단 10진법 수를 2진법으로 나타낼건데,
2) 그 2진법수를 가수부와 지수 부분으로 나누고
3) 지수 부분은 2ˆ(n-bias)로 표현될 때 10진법인 (n-bias)를 2진법으로 바꿔서 지수 부분으로 표현다.
4) 그리고 (음/양) + 지수부분 + 가수부분으로 나타낸다(예 32비트 상에서는 1비트(음/양) + 8비트(지수부분) + 23비트(가수부분)
*특이사항은 이렇게 가수부분을 23비트로 자르기 때문에 컴퓨터 상 부동소수점 수는 실제 수랑 차이가 난다
escape in str
: 있는 그대로 출력하고픈 것 앞에 \ 넣기
memory = {1: 1, 2: 1}
def fibonacci(n):
if n in memory:
number = memory[n] # 있으면 memory에서 가져다 써
else:
number = fibonacci(n-1) + fibonacci(n-2)
memory[n] = number # 없으면 memory에 집어넣어
return number
print(fibonacci(100)) # 속도 꽤 빨랐음
print(memory)