Quiz 14 Solution

Challenge Problem: I/O and files

# gather initial data                                                                                                 
with open('raceByState.csv') as raw:
    labels = raw.readline().strip('\n').split(',')
    states = []
    for line in raw:
        pieces = line.strip('\n').split(',')
        states.append( (pieces[0], [int(k) for k in pieces[1:]]) )

header = f'{labels[0]:20}'
for k in range(1,len(labels)):
    if k > 2:
        header += '        '        # extra room for previous percentage
    header += f'  {labels[k]:>9}'

with open('report.txt', 'w') as report:
    report.write(header+'\n')
    for s in states:
        report.write(f'{s[0]:20}')
        for k in range(len(s[1]):
            report.write(f'  {s[1][k]:>9}')
            if k > 0:
                pct = 100*s[1][k] / s[1][0]
                report.write(f' ({pct:>4.1f}%)')
        report.write('\n')

Last modified: Tuesday, 27 November 2018