Я пытаюсь создать код, который откроет файл со списком чисел в нем, а затем возьмет эти числа и сгладит их столько раз, сколько захочет пользователь. У меня есть открытие и чтение файла, но он не будет транспонировать числа. В этом формате он дает эту ошибку: TypeError: неподдерживаемый тип операндов для /: 'str' и 'float'. Мне также нужно выяснить, как сделать его транспонированием чисел, сколько раз пользователь запрашивает его. Список номеров, которые я использовал в моем .txt-файле, - [3, 8, 5, 7, 1].Как сгладить числа из файла столько раз, сколько требуется в Python 2.7?
Вот именно то, что я пытаюсь заставить его сделать:
Попросите пользователя для файла
Читать все данные с плавающей точкой из файла в список
Попросите пользователя, сколько сглаживание проходит, чтобы сделать
Показать сглаженный результат с двумя знаками после запятой
Используйте функции в соответствующих случаях
Алгоритм: Никогда не меняйте первое или последнее значения Compute новых значений для всех других значений путем усреднения значения с двумя своих соседями
Вот то, что я до сих пор:
filename = raw_input('What is the filename?: ')
inFile = open(filename)
data = inFile.read()
print data
data2 = data[:]
print data2
data2[1]=(data[0]+data[1]+data[2])/3.0
print data2
data2[2]=(data[1]+data[2]+data[3])/3.0
print data2
data2[3]=(data[2]+data[3]+data[4])/3.0
print data2
Цикл действительно помог, я просто не уверен, что вы имеете в виду, анализируя мой файл и как это сделать. И где бы я поставил eval или ast.literal_eval? (Не нравится, что в этом нет определения для аста). Я новичок в этом. – user45
Я также получаю эту ошибку при запуске: data2 [i] = sum (data [i-1: i + 2])/3.0 ТипError: неподдерживаемый тип операндов для +: 'int' и 'str' – user45
Эта ошибка возникает из-за отсутствия синтаксического анализа. Если ваш файл содержит текст '[3, 8, 5, 7, 1]', замените 'data = inFile.read()' на 'data = eval (inFile.read())'. Или импортируйте модуль 'ast' и используйте' ast.literal_eval' вместо встроенной функции 'eval' (что может привести к ошибкам, если ваш файл содержит вредоносные данные). – Blckknght