定义从输入文本文件 (Python) 给出最小值、最大值和平均值的函数
Defining functions that gives min, max and average from an input text file (Python)
我正在尝试定义一个函数,当我 运行 任何长度或整数组合通过它时,它可以给我下面的这些输出。
所以这是我得到的问题:
编写 Python 代码以读取文本文件 'input.txt' 的输入,并且对于 input.txt 中的每一行,在新文本文件中写出新行 output.txt 计算数字列表上某些操作的答案。
If the input.txt file has the following:
min: 1,2,3,5,6
max: 1,2,3,5,6
avg: 1,2,3,5,6
Your program should generate an output.txt file as following:
The min of [1, 2, 3, 5, 6] is 1
The max of [1, 2, 3, 5, 6] is 6
The avg of [1, 2, 3, 5, 6] is 3.4
到目前为止,这是我的代码:
textFile = open('input.txt', 'r+')
numberList = []
for line in textFile:
numberList.append(line.split(','))
for e in numberList:
print e
textFile.close()
def minimum(mi):
minimun = min(numberList)
return minumum
def maximum(ma):
maximum = max(numberList)
return maximum
print minimum(numberList)
print maximum(numberList)
当我尝试调用我的函数时出现问题,我不确定是函数定义错误还是我调用错误。
提前致谢。
你不应该用 function
的名字命名你的 variable
,所以你应该改变这个:
def maximum(ma):
maximum = max(numberList)
return maximum
例如:
def maximum(): # mind that arg ``ma`` is spare since you don't use it at all
my_maximum = max(numberList)
return my_maximum
首先,您的函数没有使用您期望的提供的参数,其次,您使用局部参数隐藏了函数的名称。
你可以像这样简化你的函数
def minimum(mi):
return min(mi)
或者,如果您想将结果存储在本地,无论出于何种原因,请将结果存储在与您的函数名称不同的变量中,就像这样
def minimum(mi):
min_value = min(mi)
return min_value
您的代码有几处错误。
def minimum(mi):
minimun = min(numberList)
return minumum
您正在接受 mi
的输入,但使用的是 numberList
,这很令人困惑并且可能存在错误(尽管它恰好在本例中有效,因为该函数将到达获取全局 numberList
).
您的 return 变量与您的函数同名,而您用于 min(numberList)
的变量是 minimun
事实上,您没有理由创建这些函数,因为它们的作用与内置 min
/max
函数完全相同。
您的 numList 正在创建为字符串列表(包括 'min: 1'、'2' 等字符串)。您可能想使用 int(x)
转换数值
您可能想首先拆分每行的第一部分,即 'min: '、'max: '、'avg: ' 等,使用类似 line.split(': ')
。您对 max
、min
等的输入应该是该部分之后的任何内容,拆分并转换为整数。
我正在尝试定义一个函数,当我 运行 任何长度或整数组合通过它时,它可以给我下面的这些输出。
所以这是我得到的问题:
编写 Python 代码以读取文本文件 'input.txt' 的输入,并且对于 input.txt 中的每一行,在新文本文件中写出新行 output.txt 计算数字列表上某些操作的答案。
If the input.txt file has the following:
min: 1,2,3,5,6
max: 1,2,3,5,6
avg: 1,2,3,5,6
Your program should generate an output.txt file as following:
The min of [1, 2, 3, 5, 6] is 1
The max of [1, 2, 3, 5, 6] is 6
The avg of [1, 2, 3, 5, 6] is 3.4
到目前为止,这是我的代码:
textFile = open('input.txt', 'r+')
numberList = []
for line in textFile:
numberList.append(line.split(','))
for e in numberList:
print e
textFile.close()
def minimum(mi):
minimun = min(numberList)
return minumum
def maximum(ma):
maximum = max(numberList)
return maximum
print minimum(numberList)
print maximum(numberList)
当我尝试调用我的函数时出现问题,我不确定是函数定义错误还是我调用错误。 提前致谢。
你不应该用 function
的名字命名你的 variable
,所以你应该改变这个:
def maximum(ma):
maximum = max(numberList)
return maximum
例如:
def maximum(): # mind that arg ``ma`` is spare since you don't use it at all
my_maximum = max(numberList)
return my_maximum
首先,您的函数没有使用您期望的提供的参数,其次,您使用局部参数隐藏了函数的名称。
你可以像这样简化你的函数
def minimum(mi):
return min(mi)
或者,如果您想将结果存储在本地,无论出于何种原因,请将结果存储在与您的函数名称不同的变量中,就像这样
def minimum(mi):
min_value = min(mi)
return min_value
您的代码有几处错误。
def minimum(mi):
minimun = min(numberList)
return minumum
您正在接受
mi
的输入,但使用的是numberList
,这很令人困惑并且可能存在错误(尽管它恰好在本例中有效,因为该函数将到达获取全局numberList
).您的 return 变量与您的函数同名,而您用于
min(numberList)
的变量是minimun
事实上,您没有理由创建这些函数,因为它们的作用与内置
min
/max
函数完全相同。您的 numList 正在创建为字符串列表(包括 'min: 1'、'2' 等字符串)。您可能想使用
int(x)
转换数值
您可能想首先拆分每行的第一部分,即 'min: '、'max: '、'avg: ' 等,使用类似
line.split(': ')
。您对max
、min
等的输入应该是该部分之后的任何内容,拆分并转换为整数。