Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 输入文本的最小值、最大平均值使循环通用_Python_Python 3.x - Fatal编程技术网

Python 输入文本的最小值、最大平均值使循环通用

Python 输入文本的最小值、最大平均值使循环通用,python,python-3.x,Python,Python 3.x,我对Python非常陌生,现在正忙于一个训练营——我必须完成的任务之一让我有点难堪。它们作为输入txt文件提供,如下所示: 任务是我必须在我的程序中打开txt文件,然后计算出每行的最小值、最大值和平均值。我可以用很长一段时间来完成.readlines(),但是他们希望以一种通用的方式来完成,这样行就不重要了。他们希望我用循环语句通读这些行,检查第一个单词,然后让该单词开始操作 我希望我正确地回答了这个问题 关于虽然你的问题并不完全清楚如何使用readlines,但也许这正是你想要的 f=open

我对Python非常陌生,现在正忙于一个训练营——我必须完成的任务之一让我有点难堪。它们作为输入txt文件提供,如下所示:

任务是我必须在我的程序中打开txt文件,然后计算出每行的最小值、最大值和平均值。我可以用很长一段时间来完成
.readlines()
,但是他们希望以一种通用的方式来完成,这样行就不重要了。他们希望我用循环语句通读这些行,检查第一个单词,然后让该单词开始操作

我希望我正确地回答了这个问题


关于

虽然你的问题并不完全清楚如何使用readlines,但也许这正是你想要的

f=open("store.txt","r")
for i in f.readlines():
    func,data=i.split(":")
    data=[int(j) for j in data.rstrip('\n').split(",")]
    print(func,end=":")
    if(func=="max"):
        print(max(data))
    elif(func=="min"):
        print(min(data))
    else:
        print(sum(data)/len(data))
下次请尝试展示您的工作并询问具体错误,即不是如何解决问题,而是如何更改您的解决方案以解决您面临的问题

要执行的数学操作的名称是文本文件中每行的第一个单词,其中一些是python关键字。因此,在将文件解析为数学表达式后,我发现使用python函数来执行数字列表上的操作很有诱惑力

注意:这是一个一次性的解决方案,因为不鼓励在未知数据上使用
eval
,但在这里我们管理输入数据时是安全的。
avg
不是内置操作,因此我们可以使用lambda定义它(以及任何其他非内置操作)

with open('input.txt', 'r') as f:
    data = f.readlines()

clean = [d.strip('\n').split(':') for d in data]

lines = []

# define operations in input file that are not built-in functions
avg = lambda x:  sum(x)/float(len(x)) # float for accurate calculation result

for i in clean:
    lines.append([i[0], list(map(int, i[1].split(',')))])

for expr in lines:
    info = '{}({})'.format(str(expr[0]), str(expr[1]))
    print('{} = {}'.format(info, eval('{op}({d})'.format(op=expr[0],d=expr[1]))))
输出:

min([1, 2, 3, 4, 5, 6]) = 1
max([1, 2, 3, 4, 5, 6]) = 6
avg([1, 2, 3, 4, 5, 6]) = 3.5

欢迎来到stackoverflow!请拿起这本书,仔细阅读,并提供一份能再现您的问题的报告。
min([1, 2, 3, 4, 5, 6]) = 1
max([1, 2, 3, 4, 5, 6]) = 6
avg([1, 2, 3, 4, 5, 6]) = 3.5