[AIFFEL] 21.Dec.28 - Python fundamentals

Deok Jong Moon·2021년 12월 28일
0
post-thumbnail

* 기존에 알거나 쉽게 이해된 내용은 가볍게 넘어갑니다

오늘의 학습 리스트

  1. LMS(파이썬 기초)
    함수
    변수
    제어문(if, while, for)
    자료형(str, int, float, bool, None, list, tuple, dict)
    재귀함수의 의미
    피보나치수열 함수(함수 내 무한 계산 & 함수 종료 시 증발)
    피보나치수열 함수(함수 밖 저장으로 빠르게)

  2. 풀잎스쿨(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)
profile
'어떻게든 자야겠어'라는 저 아이를 닮고 싶습니다

0개의 댓글

관련 채용 정보