[ Code Kata ] More Complex Function Parameters

Hailee·2020년 11월 22일
0

[ Code Kata ]

목록 보기
1/28
post-thumbnail

how to reverse dictionary keys order

함수 2개를 구현해주세요. 함수의 이름은 다음과 같아야 합니다.

  • sum_of_numbers
  • what_is_my_full_name

함수 sum_of_numbers는 arugment로 주어지는 모든 수를 합한 값을 리턴해야 합니다.

  • 예를 들어, sum_of_numbers(1, 2, 3, 4, 5) 는 15를 리턴해야 하고 sum_of_numbers(1,2)는 3을 리턴해야 합니다.
  • 만일 parameter가 주어지지 않으면 0을 리턴해야 합니다.
  • what_is_my_full_name 함수는 주어진 parameter중 first_name 과 last_name 이라는 parameter를 조합하여 full name을 리턴해주어야 합니다.
  • 예를 들어, first_name이 "우성" 이고 last_name 이 "정" 이면 "정 우성" 라고 리턴하면 됩니다.
  • Last name과 first name 사이에 space(빈칸)이 들어가 있어야 합니다.
  • 만일 last_name이 없거나 first_name이 없으면 둘 중하나만 리턴하면 됩니다.
  • 예를 들어, last_name이 없으면 "우성" 이라고 이름만 리턴하면 됩니다.
  • 마지막으로, last_name과 first_name 둘다 없으면 "Nobody" 라고 리턴하면 됩니다.

두번째 문제를 한시간동안 풀긴 풀었는데....
분명히 이것보다 효율적인 방법이 있을 것 같은데 도저히 모르겠다

def sum_of_numbers(*args, **kwargs):
  result = 0
  if len(args) == 0:
    return result
  else:
    for i in args:
      result += i
    return result

def what_is_my_full_name(**kwargs):
  temp = dict(reversed(list((kwargs).items())))
  print(temp)

  name = ""

  for arg in temp:
    if "last_name" in temp or "first_name" in temp:
      if "last_name" in temp and "first_name" in temp:
        if arg == "last_name":
          name += temp[arg]
        if arg == "first_name":
          name += " " + temp[arg]
      elif "last_name" in temp and "first_name" not in temp:
          if arg == "last_name":
            name += temp[arg]
      elif "last_name" not in temp and "first_name" in temp:
          if arg == "first_name":
            name += temp[arg]
    else:
      name = "Nobody"

  if len(temp) == 0:
    name = "Nobody"
    
  return name

일단 내가 한 방법은

  1. 들어온 **kwargs key 순서대로 reverse 한 뒤,
  2. 받은 arguments 중 first_name 혹은 last_name이 있는지 확인한 뒤
  3. 상황에 맞게 name 전역변수에 값을 추가한다.
  4. first_name, last_name 둘 다 없었을 경우 "Nobody",
    받은 arguments의 길이가 0이어도 "Nobody"

뒷부분 else문 + if len== 0 을 합쳐볼까? 응 안돼
애초에 len == 0이면 for문을 못 돌리니까..

더 간결한 방법이 없을까..

profile
웹 개발 🐷😎👊🏻🔥

0개의 댓글