1

有人可以帮助如何正确地将数学添加到已创建的将输出写入文本文件的函数中。第一项任务是将数字写入 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()
4

2 回答 2

2

您需要将文本数字解析为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
于 2020-02-04T14:12:52.500 回答
0

您可以使用数学函数进行计算。

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/

于 2020-02-04T14:02:24.567 回答