The possible grades are A, AB, B, BC, C, CD, D with
corresponding grade points 10, 9, 8, 7, 6, 5 and 4. The grade
point average of a student is the sum of his/her grade points
divided by the number of courses. For instance, if a student
has taken two courses with grades A and C, the grade point
average is 8 = (10+6)÷2. If a student has not completed
any courses, the grade point average is defined to be 0.
You may assume that the data is internally consistent. For every grade, there is a corresponding course code and roll number in the input data.
Each section of the input starts with a line containing a single keyword. The first section begins with a line containing Courses. The second section begins with a line containing Students. The third section begins with a line containing Grades. The end of the input is marked by a line containing EndOfInput.
Write a Python program to read the data as described above and print out a line listing the grade point average for each student in the following format:
Here is a sample input and its corresponding output.
Sample Input
You may assume that the data is internally consistent. For every grade, there is a corresponding course code and roll number in the input data.
Each section of the input starts with a line containing a single keyword. The first section begins with a line containing Courses. The second section begins with a line containing Students. The third section begins with a line containing Grades. The end of the input is marked by a line containing EndOfInput.
Write a Python program to read the data as described above and print out a line listing the grade point average for each student in the following format:
Roll Number~Full Name~Grade Point AverageYour output should be sorted by Roll Number. The grade point average should be rounded off to 2 digits after the decimal point. Use the built-in function round().
Here is a sample input and its corresponding output.
Sample Input
Courses TRAN~Transfiguration~1~2011-2012~Minerva McGonagall CHAR~Charms~1~2011-2012~Filius Flitwick Students SLY2301~Hannah Abbott SLY2302~Euan Abercrombie SLY2303~Stewart Ackerley SLY2304~Bertram Aubrey SLY2305~Avery SLY2306~Malcolm Baddock SLY2307~Marcus Belby SLY2308~Katie Bell SLY2309~Sirius Orion Black Grades TRAN~1~2011-2012~SLY2301~AB TRAN~1~2011-2012~SLY2302~B TRAN~1~2011-2012~SLY2303~B TRAN~1~2011-2012~SLY2305~A TRAN~1~2011-2012~SLY2306~BC TRAN~1~2011-2012~SLY2308~A TRAN~1~2011-2012~SLY2309~AB CHAR~1~2011-2012~SLY2301~A CHAR~1~2011-2012~SLY2302~BC CHAR~1~2011-2012~SLY2303~B CHAR~1~2011-2012~SLY2305~BC CHAR~1~2011-2012~SLY2306~C CHAR~1~2011-2012~SLY2307~B CHAR~1~2011-2012~SLY2308~AB EndOfInputSample Output
SLY2301~Hannah Abbott~9.5 SLY2302~Euan Abercrombie~7.5 SLY2303~Stewart Ackerley~8.0 SLY2304~Bertram Aubrey~0 SLY2305~Avery~8.5 SLY2306~Malcolm Baddock~6.5 SLY2307~Marcus Belby~8.0 SLY2308~Katie Bell~9.5 SLY2309~Sirius Orion Black~9.0
def gpa(l):
n=len(l)
m=0
M=0
for i in range(0,n):
if l[i]=='A':
m=10
elif l[i]=='AB':
m=9
elif l[i]=='B':
m=8
elif l[i]=='BC':
m=7
elif l[i]=='C':
m=6
elif l[i]=='CD':
m=5
elif l[i]=='D':
m=4
elif l[i]=='E':
return(0)
M += m
#M_round=round(M ,2)
gpa = (M/n)
return(round(gpa,2))
n=None
c=''
s=''
g=''
gl=''
while(n!='EndOfInput'):
n=input()
c += n +'\n'
if (n=='Students'):
while(n!='Grades'):
n=input()
s += n +'~'+'\n'
if (n=='Grades'):
while(n!='EndOfInput'):
n=input()
g += n + '\n'
gl += n
#print(c)
#print(s)
#print(g)
G=g[ :-12]
#print(gl)
#print(G)
S=s[ :-8]
gs=G.split('\n')
#print(G,end='')
#print(gs)
#print(S,end='')
stu=S.split('\n')
#print(stu)
stud=stu[ : -1]
#print(stud)
stut=[]
for a in range(0,len(stud)):
stut += [stud[a].split('~')]
#print(stut)
sorted_stut= sorted(stut)
#print(sorted_stut)
for p in range(0,len(stut)):
if gl.find(stut[p][0])== -1:
gs += ['t~t~t~' + str(stut[p][0])+'~E']
#print(gs)
gsl=[]
for i in range(0,len(gs)):
gsl += [gs[i].split('~')]
#print(gsl)
gslm=[]
for j in range(0,len(gsl)):
gslm += [{gsl[j][3]:gsl[j][4]}]
#print(gslm)
r={}
for d in gslm:
for k,v in d.items():
r.setdefault(k,[]).append(v)
#print(r)
R={}
R=sorted(r.items())
#print(R)
grades=[]
for z in range(0,len(R)):
grades += [R[z][1]]
#print(grades)
glist=[]
for x in range(0,len(grades)):
glist += [gpa(grades[x])]
#print(glist)
outputlist=[]
for x in range(0,len(R)):
outputlist += [[sorted_stut[x][0]] +['~']+[sorted_stut[x][1]]+['~']+ [str(glist[x])]+['\n']]
#print(outputlist)
for x in range(0,len(outputlist)):
print(outputlist[x][0]+outputlist[x][1]+outputlist[x][2]+ outputlist[x][3]+outputlist[x][4])
Thanks
Happy Programming !
Thanks for the superb remark, I had worked very hard to solve this problem.
ReplyDeleteGood bro
ReplyDeleteNIOS
ReplyDeleteIgnou
ReplyDelete