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
   14   15   16   17   18   19   20   21   22   23   24