In [3]:
import glob

fnames = sorted(glob.glob("invoices/*"))
print(fnames)
['invoices/1.dat', 'invoices/2.dat', 'invoices/3.dat', 'invoices/4.dat', 'invoices/5.dat']
In [8]:
fname = "invoices/3.dat"
with open(fname,'r') as f:
    text = f.read().splitlines()
print(text)
['3,Sun General,Srivatsan', 'Batteries,Utilities,6,14', 'USB Cable,Electronics,1,85', 'Ball Pens,Stationery,5,12', 'Onions,Vegetables/Food,1.25,100']
In [9]:
ss = '3,Sun General,Srivatsan'
fields = ss.split(',')
print(fields)
['3', 'Sun General', 'Srivatsan']

sample data in grades.dat¶

Jones:1301,4,A:1302,4,B:2720,3,A
Smith:1301,4,C:1302,4,D
Alice:2720,3,A:4710,4,B
In [13]:
with open("grades.dat",'r') as f:
    lines = f.read().splitlines()
transcripts = []
for line in lines:
    parts = line.split(':')
    name = parts[0]
    courses = []
    for part in parts[1:]:
        course,credits,grade = part.split(',')
        courses.append((course,credits,grade))
    transcripts.append((name,courses))
for transcript in transcripts:
    print(transcript)
('Jones', [('1301', '4', 'A'), ('1302', '4', 'B'), ('2720', '3', 'A')])
('Smith', [('1301', '4', 'C'), ('1302', '4', 'D')])
('Alice', [('2720', '3', 'A'), ('4710', '4', 'B')])
In [17]:
def student_gpas(transcripts):
    gpas = []
    grade_points = {'A':4,'B':3,'C':2,'D':1,'F':0}
    for transcript in transcripts:
        name = transcript[0]
        courses = transcript[1]
        total_points = 0
        total_credits = 0
        for course, credits, grade in courses:
            total_points += grade_points.get(grade,0)*int(credits)
            total_credits += int(credits)
        gpa = total_points / total_credits 
        gpas.append((name,round(gpa,2)))
    return gpas
In [18]:
g = student_gpas(transcripts)
print(g)
[('Jones', 3.64), ('Smith', 1.5), ('Alice', 3.43)]