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
일단 내가 한 방법은
- 들어온
**kwargs
key 순서대로 reverse 한 뒤,- 받은 arguments 중 first_name 혹은 last_name이 있는지 확인한 뒤
- 상황에 맞게 name 전역변수에 값을 추가한다.
- first_name, last_name 둘 다 없었을 경우 "Nobody",
받은 arguments의 길이가 0이어도 "Nobody"
뒷부분 else문 + if len== 0 을 합쳐볼까? 응 안돼
애초에 len == 0이면 for문을 못 돌리니까..
더 간결한 방법이 없을까..