2016-11-15 500 views
0

程序应丢弃最小和最大数字,并计算并显示剩余数字的平均值。到目前为止,我想我应该导入函数numpy来获得平均值,但我不知道如何将for循环放入它。使用for循环计算列表中数字的平均值

import numpy 

numbers = input('Enter any list of numbers(seperated by any commas): ') 

n2 = numpy.mean(numbers) 
print(n2) 
+1

是否需要使用numpy? –

+0

Python3已经可以使用标准库来计算平均值。 Numpy不需要 –

+0

你使用的是python 3还是python 2? – DSM

回答

1

您错过了将输入转换为数字列表的步骤。如果您使用的是Python 2.x,那么input()就像您使用的那样会返回numpy.mean()可以处理的数字元组。如果您使用python3,则input()会返回一个字符串,该字符串必须被解析为数字。

的Python 2.x版:

import numpy 
numbers = input('Enter any list of numbers(seperated by any commas): ') 
n2 = numpy.mean(numbers) 
print(n2) 

蟒蛇3版本:

import numpy 
numbers = input('Enter any list of numbers(seperated by any commas): ') 
num_list = [int(x) for x in numbers.split(',')] 
n2 = numpy.mean(num_list) 
print(n2) 
+0

您错过了删除最小和最大的部分 –

+0

如果数字之间用逗号分隔,则需要在转换之前拆分字符串。 – DSM

+0

@DSM'numbers'在他的代码中被定义为在给定输入之后被设置为一个元组,没有split()。不过,我确实错过了最小/最大部分。他认为一旦他有数字合作,他可能会在那个部分刺伤他。即使如此,这段代码假定一切都是一个整数,这可能是不正确的。 –

0

你的问题是不是真的清楚。你想计算一个值数组的平均值,并且你有一个方法可以为你做。为什么你需要一个for循环?

不过,您的输入是一个字符串,所以您必须在处理它之前将其转换为数组。这有点复杂,似乎超出了你的问题,所以我只假设numbers已经是一个数字数组。

你想删除的最小和最大的价值,这是简单的做这样:

numbers.remove(max(numbers)) 
numbers.remove(min(numbers)) 

然后,只需调用mean方法:

numpy.mean(numbers) 

如果你真的想用一个for循环,这里是计算平均值的方法(这是numpy所做的,但是以更加优化的方式):

mean = 0 
for value in numbers: 
    mean += numbers 
mean /= len(numbers) 
+0

@ cricket_007“尽管如此,你的输入是一个字符串,所以你必须在处理它之前将它转换成一个数组。这有点复杂,并且看起来超出了你的问题,所以我只假设这些数字已经是一个数组数字。“ –

+0

对,错过了:) –

+0

@ cricket_007没问题,其实如果我们跳过这个部分,我真的没有得到OP的问题......我认为这对使用'mean'函数有误解,或者可能是什么在处理大量数据时,它实际上可能会变得令人困惑 –