здесь проблема: напишите программу, которая вычисляет и печатает среднее число в текстовом файле.Вы должны использовать две функции высшего порядка, чтобы упростить конструкцию.
Пример ввода и вывода программы показан ниже:
Введите имя файла ввода: numbers.txt
Среднее значение составляет 69,83333333333333
вот цифры в числах. Текст: 45 66 88 100 22 98
и вот мой код:
file = input("Enter the input file name: ")
with open(file) as f:
from functools import reduce
def add(x, y): return x + y
data = [45, 66, 88, 100, 22, 98]
total = reduce(add, data)
avg = total / len(data)
print("The average is: ", avg)
if __name__ == "__main__":
main()
проблема в том, что это работает нормально, когда я вручную вводю элементы в список, но когда я добавил функцию line.strip и попытался поместить ее в список, а затем преобразовал ее с помощью карты, это мой код:
file = input("Enter the input file name: ")
with open(file) as f:
for line in f:
line = line.strip()
data = [line]
data = list(map(int, data))
from functools import reduce
def add(x, y): return x + y
total = reduce(add, data)
avg = total / len(data)
print("The average is: ", avg)
if __name__ == "__main__":
main()
Я получаю эту ошибку:
Traceback (most recent call last):
File "average.py", line 15, in <module>
main()
File "average.py", line 7, in main
data = list(map(int, data))
ValueError: invalid literal for int() with base 10: '100 22 98'
Я ужасно разбираюсь в кодировании, не могли бы вы помочь мне понять 1) в чем ошибка 2) что-то не так с тем, что список не преобразуетстроки в целые числа?
Спасибо!