웹 개발 메모장

[파이썬] 년도별 신생아 수 구하기 (파일입출력 예제) 본문

옛날../파이썬

[파이썬] 년도별 신생아 수 구하기 (파일입출력 예제)

도로롱주 2017. 12. 11. 17:26





년도별 신생아 수 구하기




(https://catalog.data.gov/dataset/baby-names-from-social-security-card-applications-national-level-data)

라는 사이트에서 년도별 신상아 정보를 다운받을 수 있습니다.

다운받으면 names 라는 폴더에 yob0000.txt 라는 파일들이 들어있는 것을 확인할 수 있습니다.



위와 같이 파이썬 프로젝트 내에 해당 폴더를 넣어놨습니다. 

각 .txt 파일의 구조는 아래과 같습니다.






이제 문제입니다.




문제 1. 위 파일들을 바탕으로 년도별 신생아 수 를 구하시오.



해설)

현재 폴더에는 1880년 ~ 2016년 까지의 파일이 저장되어 있습니다.

반복문을 통해 해당 파일들에 접근한 뒤 해당 파일들의 line 수를 체크하면 정답이됩니다.



답)

1
2
3
4
5
for year in range(18802017) :
    fileName = "names/yob{0}.txt".format(year)
    yobFile = open(fileName, 'r')
    print("{0}년도 신생아 : {1}명".format(year, len(list(yobFile.readlines()))))
    yobFile.close()
cs

 

결과)






문제 2. 년도별 신생아 수를 남아, 여아 구분하여 구하시오.



해설)

문제 1과 마찬가지로 접근하되, 문자열의 ',' 로 구분된 두번째 요소 'F' 또는 'M' 을 활용하면 됩니다.



답)

1
2
3
4
5
6
7
8
9
10
11
for year in range(18802017) :
 
    fileName = "names/yob{0}.txt".format(year)
    yobFile = open(fileName, 'r')
 
    babys = yobFile.readlines()
    boys = [baby for baby in babys if baby.split(',')[1]=='M']
    girls = [baby for baby in babys if baby.split(',')[1]=='F']
 
    print("{0}년도 신생아 : 남아 {1}명, 여아 {2}명".format(year, len(boys), len(girls)))
    yobFile.close()
cs


결과)




Comments