Как добавить математику в ваши функции для записи в текстовый файл - PullRequest
1 голос
/ 04 февраля 2020

Может кто-нибудь помочь с тем, как правильно добавить математику в уже созданную функцию, которая записывает вывод в текстовый файл. Первая задача состояла в том, чтобы записать числа в файл output.txt в значениях от самого низкого до самого высокого, независимо от числа или количества чисел. Это я сделал согласно моему коду ниже. Моя проблема в том, что теперь мне нужно показать минимальное число в первой строке, максимальное число во второй и среднее число в строке 3. Если кто-нибудь может помочь, я был бы очень признателен за понимание

Текстовый файл (input.txt)

мин: 1,2,3,4,5,6

макс: 18,25,32,14,15,62

ср .: 1,2,3,4,5,6

Вывод должен быть:

Минус [1,2,3,4, 5,6] равен 1

Макс. [14,15,18,25,32,62] составляет 62

Среднее значение [1,2,3,4,5, 6] составляет 3,4

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

Мой код пока:

def number1():
    inputFile = open("input.txt", 'r')
    lineList = inputFile.readlines()
    fileHandle = open('inputcopy.txt', 'a')
    for line in lineList:
        numbers = [int(item) for item in line.split(':')[1].split(',')]
        numbers.sort()
        fileHandle.write("%s\n" % numbers)  
number1()

Ответы [ 2 ]

2 голосов
/ 04 февраля 2020

Вам нужно разобрать текстовые числа в ints, чтобы python мог их обработать и отобразить математические операции, например, следующим образом:

from statistics import mean


with open('input.txt') as file:
    data = {
        line.split(':')[0]: sorted([int(value) for value in line.split(':')[1].split(',')]) for line in file.readlines()
    }

functions = {'min': min, 'max': max, 'avg': mean}

with open('output.txt', 'w') as file:
    file.writelines(
        f"The {function} of {values} is {functions[function](values)}\n" for function, values in data.items()
    )

Что даст вам:

>>> The min of [1, 2, 3, 4, 5, 6] is 1
>>> The max of [14, 15, 18, 25, 32, 62] is 62
>>> The avg of [1, 2, 3, 4, 5, 6] is 3.5
0 голосов
/ 04 февраля 2020

Вы можете использовать математические функции для расчета.

import statistics

def number1():
    inputFile = open("input.txt", 'r')
    lineList = inputFile.readlines()
    fileHandle = open('inputcopy.txt', 'a')
    for line in lineList:
        numbers = [int(item) for item in line.split(':')[1].split(',')]
        numbers.sort()
        if line.split(':')[0] == 'min':
             fileHandle.write("%s\n" % min(numbers))
        elif line.split(':')[0] == 'max':
             fileHandle.write("%s\n" % max(numbers))
        elif line.split(':')[0] == "avg":
             fileHandle.write("%s\n" & statistics.mean(numbers))  
number1()

Взгляните на https://www.geeksforgeeks.org/max-min-python/ и https://appdividend.com/2019/01/28/python-statistics-tutorial-mean-function-example/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...