Напишите программу, которая вычисляет и печатает среднее число чисел в текстовом файле. - PullRequest
0 голосов
/ 08 июля 2020

Напишите программу, которая вычисляет и печатает среднее число чисел в текстовом файле. Я создал текстовый файл inteers.txt с числами 5,4,3,2,1.

Мне нужно определить среднюю функцию

Определить основную функцию, которая будет включать следующие вещи

  1. запрашивать у пользователя ввод имени текстового файла

  2. открывать и читать входной файл, может быть выполнено до или внутри функций высокого порядка

  3. использовать две функции высокого порядка

4. вычислять и отображать средние значения и исходный список

вызов основной

выход из программы

Вот что у меня пока что:

'Write a program that computes and prints the average of numbers in a text file.'

def getNumberList(filename):

    f = open(filename,'r')
    line = f.readline()
    numbers = line.split(',')#split the numbers separated by comma
    numberList = []#holds the integer value 
    for i in numbers:
        numberList.append(int(i))

    return numberList

def getAverage(numbers):

    sum = 0#stores the sum of the numbers in the list
    count = 0#keeps the count of numbers in the list
    for i in numbers:
        sum = sum + i
        count = count + 1

    average = sum/count#calculate the average
    return average

def main():

    #take input from the user
    filename = input("Enter filename : ")
    #get the numbers from the file
    numbers = getNumberList(filename)
    #get the average from the numbers list
    average = getAverage(numbers)
    #display the average
    print(average)
    
if __name__ == "__main__":
    main()

Не знаю, как добавить две функции высшего порядка или как заставить его распечатать исходный список. Я пробовал print(numberList) безуспешно.

1 Ответ

0 голосов
/ 08 июля 2020

С этого веб-сайта: https://www.geeksforgeeks.org/higher-order-functions-in-python/

Функция называется функцией высшего порядка, если она содержит другие функции в качестве параметра или возвращает функцию в качестве вывода, т. Е. функции, которые работают с другой функцией, известны как функции высшего порядка.

Попробуйте следующее:

def getNumberList(filename): # Define a function that returns a list of numbers with filename as paramater
    with open(filename,'r') as f:
        strList = f.read().split('\n')
        numberList = [int(num) for num in strList]
    return numberList

def getAverage(filename, func): # Define a function that returns the average of the numbers from a file, with the filename and the function that returns numbers as parameters
    numbers = func(filename)
    return sum(numbers)/len(numbers)

def main():
    filename = input("Input the file name: ")
    average = getAverage(filename, getNumberList)
    print(average)

if __name__ == "__main__":
    main()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...