Содержит ли файл строку stuff.txt
внутри? Как написано, единственная ошибка в вашем коде заключается в том, что вы отбрасываете четные строки (те, которые неявно читаются в line
в for
l oop), сохраняя только нечетные (из вызов readline
).
Это можно исправить, изменив l oop на:
def my_average(file):
numbers = []
with open(file) as f:
for line in f:
numbers.append(float(line)) # Convert the line you've got, not a new one from readline
return sum(numbers)/len(numbers)
Если некоторые строки могут быть недопустимыми, например, потому что файл начинается с stuff.txt
вы можете молча игнорировать эти строки, перехватывая исключение, анализируя их и игнорируя его:
def my_average(file):
numbers = []
with open(file) as f:
for line in f:
try:
numbers.append(float(line))
except ValueError:
pass
return sum(numbers)/len(numbers)