21.1.22

커피 내리는 그냥 사람·2021년 1월 22일
0

위코드 사전스터디

목록 보기
15/36

<코딩도장 복습 통한 새로 이해한 내용 정리 : Unit : 29~31>

  1. 위치 인수의 언패킹 : 위치가 정해진 인자나 리스트 등을 풀어서 표현해주는 것. 포장을 푼다. 하지만 타입이 바뀐 것은 아니다.
x = [10, 20, 30]
print(*x)
>>>
10 20 30
  • 그럼 어디에서 사용할까? : 가변 인수(인수의 갯수가 정해지지 않은 곳)에서 사용한다.
>>> def print_numbers(*args):
...     for arg in args:
...         print(arg)
  • 고정 인수와 함께 사용할 때는 뒤에 붙여준다.
  1. 키워드 인수 : 인수에 이름(키워드)를 붙여 키워드 = 값을 사용하여 편리하게 쓸 수 있는 기능. 순서가 달라도 리턴값에 알아서 맞춰질 수 있다.
  • 변수에 딕셔너리를 저장한 후 함수에 언패킹하여 넣어서 리턴할 수도 있다.
>>> def personal_info(name, age, address):
...     print('이름: ', name)
...     print('나이: ', age)
...     print('주소: ', address)

>>> x = {'name': '홍길동', 'age': 30, 'address': '서울시 용산구 이촌동'}
>>> personal_info(**x)
이름:  홍길동
나이:  30
주소:  서울시 용산구 이촌동

<키워드 인자 예시>

>>> def personal_info(**kwargs):
...     for kw, arg in kwargs.items():
...         print(kw, ': ', arg, sep='')
...

매개변수의 인자로 리스트(혹은 튜플)이나 딕셔너리를 써야할 때 써야하는 것이 위치 인수와 키워드 인수이고, 이를 쓰는 과정에서 괄호를 풀어햐 하는 것이 언패킹이다.

  1. 심사문제 30.7
  • 딕셔너리의 값만 합계 구하고 평균내기 : 어렵게 생각 않기
def get_min_max_score(*args):
  return min(args), max(args)
def get_average(**kwargs):
  return sum(kwargs.values()) / len(kwargs)

필요한건 kwargs를 통해 언패킹 된 values다. 이를 그냥 메서드로 이용해서 바로 구해주면 된다.

  1. 재귀 함수 좋은 예제
  • 연습문제 31 : 재귀와 회문판별
def is_palindrome(word):
  if len(word) < 2:
    return True
  if word[0] != word[-1]:
    return False
  return is_palindrome(word[1:-1])

print(is_palindrome('hello'))
print(is_palindrome('level'))
  • 심사문제 31 : 재귀와 피보나치 수열
def fib(a):
  if a<=1:
    return a
  else:
    return fib(a-1) + fib(a-2)
n = int(input())
print(fib(n))

수 십 번을 풀었는데도 식으로 와닿지가 않았나보다.

먼저 인자가 1보다 작으면 값이 성사가 안 되므로 리턴해주고, 아닐 경우는 그냥 전 수와 그 전 수를 더하는 것으로 리턴해주는 재귀함수로 풀어준다. 이제 이 쯤 되면 외워야겠다.

profile
커피 내리고 향 맡는거 좋아해요. 이것 저것 공부합니다.

0개의 댓글