Python - List of Files: Functions, Modules and Files - if statement 1
Head First Python: A Learner’s Guide to the Fundamentals of Python Programming, A Brain-Friendly Guide、 Paul Barry(著)、 O’Reilly Mediaの Chapter 4.(List of Files: Functions, Modules & Files)、SHARPEN YOUR PENCIL(233/682)の解答を求めてみる。
Jupyter(コード、入出力結果)
Files.ipynb
for fn in swim_files:
print(fn)
swimclub.read_swim_data(fn)
Hannah-13-100m-Free.txt
Darius-13-100m-Back.txt
Owen-15-100m-Free.txt
Mike-15-100m-Free.txt
Hannah-13-100m-Back.txt
Mike-15-100m-Back.txt
Mike-15-100m-Fly.txt
Abi-10-50m-Back.txt
Ruth-13-200m-Free.txt
Tasmin-15-100m-Back.txt
Erika-15-100m-Free.txt
Ruth-13-200m-Back.txt
Abi-10-50m-Free.txt
Maria-9-50m-Free.txt
Elba-14-100m-Free.txt
Tasmin-15-100m-Free.txt
Abi-10-100m-Back.txt
Abi-10-50m-Breast.txt
Mike-15-200m-IM.txt
Ali-12-100m-Back.txt
Ruth-13-100m-Back.txt
Chris-17-100m-Back.txt
Ali-12-100m-Free.txt
Darius-13-100m-Breast.txt
Ruth-13-100m-Free.txt
Aurora-13-50m-Free.txt
Katie-9-100m-Breast.txt
Alison-14-100m-Breast.txt
Ruth-13-400m-Free.txt
Emma-13-100m-Free.txt
Calvin-9-50m-Fly.txt
Darius-13-100m-Fly.txt
Mike-15-200m-Free.txt
Emma-13-100m-Breast.txt
Tasmin-15-100m-Breast.txt
Blake-15-100m-Free.txt
Abi-10-100m-Breast.txt
Chris-17-100m-Breast.txt
Blake-15-100m-Back.txt
Bill-18-200m-Back.txt
Darius-13-200m-IM.txt
Dave-17-100m-Free.txt
Alison-14-100m-Free.txt
Lizzie-14-100m-Free.txt
Katie-9-50m-Fly.txt
Katie-9-50m-Breast.txt
Katie-9-50m-Back.txt
Lizzie-14-100m-Back.txt
Tasmin-15-200m-Breast.txt
Katie-9-50m-Free.txt
Dave-17-200m-Back.txt
Erika-15-200m-Breast.txt
Calvin-9-50m-Back.txt
Calvin-9-50m-Free.txt
Carl-15-100m-Back.txt
Bill-18-100m-Back.txt
Katie-9-100m-Free.txt
Blake-15-100m-Fly.txt
Erika-15-100m-Breast.txt
Katie-9-100m-Back.txt
コード
swimclub.py
import os
import statistics
FOLDER = "swimdata"
def read_swim_data(filename: str):
swimmer, age, distance, stroke = filename.removesuffix('.txt').split('-')
with open(os.path.join(FOLDER, filename)) as f:
lines = f.readlines()
times = lines[0].strip().split(',')
converts = []
for t in times:
if ':' in t:
minutes, rest = t.split(':')
else:
minutes = 0
rest = t
seconds, hundredths = rest.split('.')
converts.append(
int(minutes) * 60 * 100 + int(seconds) * 100 + int(hundredths)
)
average = statistics.mean(converts)
mins_secs, hundredths = str(round(average / 100, 2)).split('.')
mins_secs = int(mins_secs)
minutes = mins_secs // 60
seconds = mins_secs - minutes * 60
average = str(minutes) + ':' + str(seconds) + '.' + hundredths
return swimmer, age, distance, stroke, times, average