본문 바로가기

Python_Matter/Solve

Python Learn the basics Quiz 23

Q>

아래의 표는 한 학과의 성적표이다. 이를 CSV 파일 형식으로 저장하시오.

그리고 위에 CSV 파일을 읽어들여서 각 학생들의 총점, 평균 점수를 계산하여 출력하는 프로그램을 작성하시오.

이름 국어 영어 수학 과학
철수 80 92 90 88
영희 82 80 77 82
민수 91 72 62 70
지현 77 64 80 64


A>

grade_dic = {
'이름' : ['철수', '영희', '민수', '지현'],
'국어' : [80, 82, 91, 77],
'영어' : [92, 80, 72, 64],
'수학' : [90, 77, 62, 80],
'과학' : [88, 82, 70, 64]
}

tpl = '{0},{1},{2},{3},{4}\n'
keys = list(grade_dic.keys())

p = ','
title = p.join(keys)

with open('성적표.csv', 'w', encoding='euc-kr') as f:
f.write(title + '\n')

for i in range(len(grade_dic.values())-1):
tmp = tpl.format(grade_dic['이름'][i], grade_dic['국어'][i],
grade_dic['영어'][i], grade_dic['수학'][i],
grade_dic['과학'][i])
f.write(tmp)
print('csv 파일을 만들었습니다.')
print('-' * 10)

a = []
with open('성적표.csv', 'r') as reader:
for line in reader:
vol = line.strip().split(',')
a.append(vol)

import itertools
b = list(itertools.chain.from_iterable(a))

stu1 = map(int, b[6:10])
stu2 = map(int, b[11:15])
stu3 = map(int, b[16:20])
stu4 = map(int, b[21:])

print('{0}의 평균 점수는 {1}점 입니다.'.format(b[5], sum(list(stu1)) / len(b[6:10])))
print('{0}의 평균 점수는 {1}점 입니다.'.format(b[10], sum(list(stu2)) / len(b[11:15])))
print('{0}의 평균 점수는 {1}점 입니다.'.format(b[15], sum(list(stu3)) / len(b[16:20])))
print('{0}의 평균 점수는 {1}점 입니다.'.format(b[20], sum(list(stu4)) / len(b[21:])))


O>

csv 파일을 만들었습니다.

----------

철수의 평균 점수는 87.5점 입니다.

영희의 평균 점수는 80.25점 입니다.

민수의 평균 점수는 73.75점 입니다.

지현의 평균 점수는 71.25점 입니다.


Process finished with exit code 0

'Python_Matter > Solve' 카테고리의 다른 글

Python Learn the basics Quiz 25  (0) 2019.04.13
Python Learn the basics Quiz 24  (0) 2019.04.13
Python Learn the basics Quiz 23  (0) 2019.04.08
Python Learn the basics Quiz 22  (0) 2019.03.30
Python Learn the basics Quiz 21  (0) 2019.03.30
Python Learn the basics Quiz 20  (0) 2019.03.28