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