程序應丟棄最小和最大數字,並計算並顯示剩餘數字的平均值。到目前爲止,我想我應該導入函數numpy來獲得平均值,但我不知道如何將for循環放入它。使用for循環計算列表中數字的平均值
import numpy
numbers = input('Enter any list of numbers(seperated by any commas): ')
n2 = numpy.mean(numbers)
print(n2)
程序應丟棄最小和最大數字,並計算並顯示剩餘數字的平均值。到目前爲止,我想我應該導入函數numpy來獲得平均值,但我不知道如何將for循環放入它。使用for循環計算列表中數字的平均值
import numpy
numbers = input('Enter any list of numbers(seperated by any commas): ')
n2 = numpy.mean(numbers)
print(n2)
您錯過了將輸入轉換爲數字列表的步驟。如果您使用的是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)
您錯過了刪除最小和最大的部分 –
如果數字之間用逗號分隔,則需要在轉換之前拆分字符串。 – DSM
@DSM'numbers'在他的代碼中被定義爲在給定輸入之後被設置爲一個元組,沒有split()。不過,我確實錯過了最小/最大部分。他認爲一旦他有數字合作,他可能會在那個部分刺傷他。即使如此,這段代碼假定一切都是一個整數,這可能是不正確的。 –
你的問題是不是真的清楚。你想計算一個值數組的平均值,並且你有一個方法可以爲你做。爲什麼你需要一個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)
@ cricket_007「儘管如此,你的輸入是一個字符串,所以你必須在處理它之前將它轉換成一個數組。這有點複雜,並且看起來超出了你的問題,所以我只假設這些數字已經是一個數組數字。「 –
對,錯過了:) –
@ cricket_007沒問題,其實如果我們跳過這個部分,我真的沒有得到OP的問題......我認爲這對使用'mean'函數有誤解,或者可能是什麼在處理大量數據時,它實際上可能會變得令人困惑 –
是否需要使用numpy? –
Python3已經可以使用標準庫來計算平均值。 Numpy不需要 –
你使用的是python 3還是python 2? – DSM