2016-11-15 159 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'函數有誤解,或者可能是什麼在處理大量數據時,它實際上可能會變得令人困惑 –