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