[Codeit - python] 코딩에 빠진 닭

SUNGJIN KIM·2021년 9월 11일
2

codeit

목록 보기
2/18

문제

밑에 나와 있는 chicken.txt 파일을 보세요. 제가 운영하는 치킨집 '코딩에빠진닭(이하 코빠닭)'의 12월 매출이 정리되어 있습니다.

1일: 453400
2일: 388600
3일: 485300
4일: 477900
5일: 432100
6일: 665300
7일: 592500
8일: 465200
9일: 413200
10일: 523000
11일: 488600
12일: 431500
13일: 682300
14일: 633700
15일: 482300
16일: 391400
17일: 512500
18일: 488900
19일: 434500
20일: 645200
21일: 599200
22일: 472400
23일: 469100
24일: 381400
25일: 425800
26일: 512900
27일: 723000
28일: 613600
29일: 416700
30일: 385600
31일: 472300
:의 왼쪽에는 해달 월의 며칠인지, 그리고 오른쪽에는 그 날의 매출이 적혀 있습니다.

data 폴더의 chicken.txt 파일을 읽어 들이고, strip과 split을 써서 12월 코빠닭의 하루 평균 매출을 출력하세요. 평균을 구하기 위해서는 총 매출을 총 일수로 나누면 됩니다.

참고로 현재 제공된 파일에는 31일이 있지만, 어떤 달은 31일이 아닐 수도 있습니다. 이 점을 고려해서 확장성 있는 코드를 작성해 주시길 바랍니다.

출력 결과는 아래와 같습니다.

501916.12903225806

문제풀이

처음 파일을 불러올때, 아래의 오류와 같이 출력되었다.

file = open('data/chicken.txt','r',encoding = 'utf-8')

for line in file:
    print(file)
<_io.TextIOWrapper name='data/chicken.txt' mode='r' encoding='UTF-8'>

31일치의 해당 오류가 실행되었고, 이를 해결하기 위해 방법을 찾아봤다.
알고보니, file 을 print 하는 것이 아니고, line을 print 해야 하는 것이였다.
코드를 아래와 같이 수정하니 정상적으로 노출되었다.
(strip()는 공백을 없애고 붙여서 노출시키기위해 추가하였다.)

file = open('data/chicken.txt','r',encoding = 'utf-8')

for line in file:
    print(line.strip())

파일입출력의 문제가 해결되고, 제대로 문제를 풀어보기위해 확인해야할 조건을 먼저 작성해봤다.

  1. 문제의 목적 : 12월 코빠닭의 하루 평균 매출값 구하기
  2. 문제를 해결하기 위해 필요한 요소 :
    1) 하루 평균 매출값을 구하기 위한 일별 매출값
    2) 확장성을 위한 30일/31일에 대한 고려
    3) 평균 : 총 매출 일수 / 일수

확장성을 고려하지 않을 경우에는 그냥 31일을 나누면되지만 30일, 28일, 31일... 로 나눌 수 있기때문에 cnt라는 변수로 더하는 일수를 구한 뒤, 그 값을 그대로 나눠준다.
이로써 확장성 해결!

file = open('data/chicken.txt','r',encoding = 'utf-8')

# 총 매출 평균값
sum = 0 
cnt = 0
for line in file:
    sales_data = line.strip().split(": ")
    sum += int(sales_data[1])
    cnt += 1
    
print(sum/cnt)
profile
#QA #woonmong

0개의 댓글