3/24 TIL

나명흠·2023년 3월 24일
0

문제.

team = [
    {'name': '진규', 'age': 91},
    {'name': '현식', 'age': 93},
    {'name': '명흠', 'age': 94},
    {'name': '소진', 'age': 97},
    {'name': '혜린', 'age': 98}
]

def team_age(team):
    if team['age'] < 92:
        return '최연장자'
    elif team['age'] < 94:
        return '둘째'
    elif team['age'] < 95:
        return '셋째'
    elif team['age'] < 98:
        return '넷째'
    else:
        return '막내'

result = map(team_age, team)
print(list(result))

팀 자체 개인 숙제로 브리핑 했던 map 함수.

시도한 것.

def team_age(team):
    if team['age'] < 92:
        return '최연장자'
    elif team['age'] < 94:
        return '둘째'
    elif team['age'] < 95:
        return '셋째'
    elif team['age'] < 98:
        return '넷째'
    else:
        return '막내'

이걸 한 줄로 줄이기 위해 해본 여러 시도는

return '최연장자' if team['age'] < 92 return '둘째' elif team['age'] < 94 return '셋째' elif team['age'] < 95 return '넷째' elif team['age'] < 98 else '막내'

여기서 ,와 (),{},[] 등 각종 시도를 했지만 안되서 뭔가 다른 방식이 있다고 생각하고 서치 시작

두 가지 문제가 있었는데,

첫 번째,
return은 결과 값을 내고 종료되기 때문에 if-elif-else가 아니라 if-else를 써야 함.

두 번째,
가능하지만

def team_age(team):
    return '최연장자' if team['age'] < 92 else '둘째' if team['age'] < 94 else '셋째' if team['age'] < 95 else '넷째' if team['age'] < 98 else '막내'

보다시피 가독성이 오히려 떨어져서 잘 사용하진 않는 듯.

결론.

시스템적으로 가능하지만 내 접근방식이 잘못 되었음.
올바른 접근방식을 알아냈지만 기호에 맞지 않음.
시스템적 가부를 알고 그게 나의 방식으로 쓸지 결정하는 좋은 기회였다.

profile
가보자고

0개의 댓글