Преобразование кода python

Я пытаюсь получить среднее и общее количество из txt файла через массив. Я получил txt файл для отображения, но по какой-то причине у меня возникли проблемы с преобразованием строки в int. Я могу получить значение строки для преобразования в int, но не в числовой массив. Я продолжаю получать ошибки, говоря, что аргумент должен быть строкой или числом, а не списком. Способ, которым у меня установлен мой код, - это просто добавление первого номера, но не следующего числа после этого. Я новичок в программировании, и эта программа кажется такой простой, но я не могу назвать эту часть. Любая помощь будет оценена.

2 ответа

В вашем коде есть много улучшений. Вы могли бы сделать это в одной строке, но я думаю, что это будет более ясным:

total = 0.0
counter = 0
for line in open('numbers.dat', 'r'):
 total += int(line)
 counter += 1
print 'Total', total
print 'Average', total/counter

Таким образом, поскольку файл итерируется, вы можете перебирать его с помощью for in. Остальная часть кода очевидна.


Я думаю, что enrmarc на правильном пути, но код может быть еще более Pythonic, используя оператор with и перечислять для подсчета элементов.

with open("numbers.dat") as f:
 total = 0

 for counter, line in enumerate(f):
 total += int(line)

 counter += 1
 print "Total", counter
 print "Average", float(total) / counter

licensed under cc by-sa 3.0 with attribution.