Page 19 -
P. 19
def get_stats(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}')
>>>
최소 길이: 60, 최대 길이: 73
평균: 67.5, 중앙값: 68.5, 개수: 10
이 코드에는 두 가지 문제가 있다. 먼저 모든 반환 값이 수(number)이기 때문
에 순서를 혼동하기 쉽다(예를 들어 평균과 중앙값이 바뀔 수 있다). 이런 실
수는 나중에 알아내기 어려운 버그를 만들어낸다. 반환 값이 많으면 실수하
기도 아주 쉬워진다.
# 올바른 사용
minimum, maximum, average, median, count = get_stats(lengths)
# 아차! 중앙값과 평균값을 서로 바꿔 썼다
minimum, maximum, median, average, count = get_stats(lengths)
136
파이썬 코딩의 기술_06.indd 136 2020-10-20 오후 2:53:02