반응형
책을 읽은 후에, 복습 차원에서 아래 문제들을 스스로 풀어보세요 :)
문제
def get_status(numbers):
minimum = min(numbers)
maximum = max(numbers)
count = len(numbers)
average = sum(numbers) / count
sorted_numbers = sorted(numbers)
middle = count // 2
if count % 2 == 0:
lower = sorted_numbers[middle -1]
upper = sorted_numbers[middle]
median = (lower + upper) / 2
else:
median = sorted_numbers[middle]
return minimum, maximum, average, median, count
minimum, maximum, average, median, count = get_stats(lengths)
print(f'최소 길이: {minimum}, 최대길이: {maximum}')
print(f'평균: {average}, 중앙값: {median}, 개수: {count}')
1. 책에서 말하는 위 코드의 2가지 문제점은 무엇인가?
더보기
1. 모든 반환 값이 수 이기 때문에 순서를 혼동하기 쉽다
2. 함수를 호출하는 부분과 반환 값을 언패킹하는 부분이 길다
2. 1번에서 제시한 문제점을 어떻게 해결할 수 있을지 방안을 제시하고, 직접 코드를 수정하여라.
더보기
이 책에서는 일단 헷갈리니까 4개 이상 쓰지말라고 제시하고 있다 나의 개인적인 생각으로는 get_status 함수를 쪼개는 방법이다. 코드는 아래와 같다
def get_min(numbers):
return min(numbers)
def get_max(numbers):
return min(numbers)
def get_average(numbers):
return sum(numbers) / len(numbers)
def get_median(numbers):
sorted_numbers = sorted(numbers)
middle = len(numbers) // 2
median = sorted_numbers[middle]
if count % 2 == 0:
lower = sorted_numbers[middle -1]
upper = sorted_numbers[middle]
median = (lower + upper) / 2
return median
이렇게 나누어 두는게 헷갈리지 않고 사용하기에도 좋고 코드를 볼 때도 각각에 대해서 분리하여 파악할 수 있다고 생각한다.
3. 이 책에서 더 많은 값을 언패킹해야 할 때, 제시하는 방법은 무엇인가? - Beter way 37 참고
더보기
1. 경량 클래스
2. namedtuple
반응형
'개발 > 파이썬' 카테고리의 다른 글
Python 함수에서는 언제 None 을 반환 하는 것이 좋을까? (0) | 2021.01.05 |
---|---|
[SOLID] 파이썬 코드로 이해하는 SRP(Single Responsibility Principle) (0) | 2020.12.31 |