Я пытаюсь получить среднее значение группы чисел в файле .txt. Работало, когда числа такие: каждое число в отдельной строке

363
186
262
247
:

Но мой файл .txt выглядит так:

237, 321, 212, 379, 201, 247, 201, 204, 298, 130
285, 229, 167, 235, 353, 176, 130, 274, 337, 192
......

Примечание: 1000 номеров. Как это исправить?

Вот что я пробовал:

import os

def averg_int(path):
   lst = []
   with open(path, "r") as file:
     for line in file: # Read one line at the time
        n = int(line.strip()) # Strip and convert to integer
        lst.append(n)
        avg=sum(lst)/len(last)
   return avg
0
Rayan 10 Окт 2021 в 12:34

2 ответа

Лучший ответ

split каждая строка и extend список с этими значениями.

В import не было необходимости, поэтому я вынул его.

def averg_int(path):
   lst = []
   with open(path, "r") as file:
     for line in file: # Read one line at the time
        numbers = [int(x) for x in line.rstrip('\n').split(', ')]
        lst.extend(numbers)
   return sum(lst)/len(lst)

Обратите внимание, что line будет содержать новую строку в конце, поэтому мы ее тоже удалим. Кроме того, вы один раз ошиблись в написании переменной (last pro lst).

0
tripleee 10 Окт 2021 в 12:58

Проблема заключается в части n = int(line.strip()), поскольку у вас есть несколько чисел в одной строке, вам нужно split их, а затем ввести приведение к int:

n = [int(i.strip()) for i in line.split()]
0
ThePyGuy 10 Окт 2021 в 09:44