首先我們先來了解一下計算平均數(shù)的IPO模式.
目前創(chuàng)新互聯(lián)已為超過千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站托管運營、企業(yè)網(wǎng)站設(shè)計、保亭黎族網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
輸入:待輸入計算平均數(shù)的數(shù)。
處理:平均數(shù)算法
輸出:平均數(shù)
明白了程序的IPO模式之后,我們打開本地的python的IDE
工具,并新建一個python文件,命名為test6.py.
請點擊輸入圖片描述
請點擊輸入圖片描述
請點擊輸入圖片描述
打開test6.py,進行編碼,第一步,提示用戶輸入要計算多少個數(shù)的平均數(shù)。
請點擊輸入圖片描述
第二步,初始化sum總和的值。注意,這是編碼的好習(xí)慣,在定義一個變量的時候,給一個初始值。
請點擊輸入圖片描述
第三步,循環(huán)輸入要計算平均數(shù)的數(shù),并計算總和sum的值。
請點擊輸入圖片描述
最后,計算出平均數(shù),并輸出,利用“總和/數(shù)量”的公式計算出平均數(shù)。
請點擊輸入圖片描述
編碼完成后,記得保存,然后進行調(diào)試運行。按F5鍵或者點擊菜單欄中的“run”-》“run model”來運行程序。
請點擊輸入圖片描述
請點擊輸入圖片描述
lst = [] #定義一個空列表
str = raw_input("請輸入數(shù)值,用空格隔開:")
lst1 = str.split(" ")#lst1用來存儲輸入的字符串,用空格分割
i = 0
while i = len(lst1)+1:
lst.a(chǎn)ppend(int(lst1.pop()))#將lst1的數(shù)據(jù)轉(zhuǎn)換為整型并賦值給lst
i += 1
#print(lst)
def sum(list):
"對列表的數(shù)值求和"
s = 0
for x in list:
s += x
return s
def average(list):
"對列表數(shù)據(jù)求平均值"
avg = 0
avg = sum(list)/(len(list)*1.0) #調(diào)用sum函數(shù)求和
return avg
print("avg = %f"%average(lst))
擴展資料:
for循環(huán)小括號里第一個“;”號前為一個為不參與循環(huán)的單次表達式,其可作為某一變量的初始化賦值語句, 用來給循環(huán)控制變量賦初值; 也可用來計算其它與for循環(huán)無關(guān)但先于循環(huán)部分處理的一個表達式。
執(zhí)行的中間循環(huán)體可以為一個語句,也可以為多個語句,當(dāng)中間循環(huán)體只有一個語句時,其大括號{}可以省略,執(zhí)行完中間循環(huán)體后接著執(zhí)行末尾循環(huán)體。
執(zhí)行末尾循環(huán)體后將再次進行條件判斷,若條件還成立,則繼續(xù)重復(fù)上述循環(huán),當(dāng)條件不成立時則跳出當(dāng)下for循環(huán)。
# coding = GBK
a =[1,2,3,4,5]
sum=0
b = len(a)
print("這個數(shù)組的長度為:",b)
for i? in a:
sum =sum +i
print("這個數(shù)組之和為:",sum)
print("這個數(shù)組平均數(shù)為",sum/b)
或
import sys
sum = 0
cnt = 0
f = open('1.txt', 'r')
files = f.readline()
while (files ):
sum = sum + float(files .split(",")[0])
cnt = cnt + 1
files = f.readline()
print(sum / cnt)
f.close()
或者。
#!/usr/bin/env pythonimport timeimport numpy as np
dd = np.random.randint(0, 20, size=(2*1000*1000))t_start = time.clock()avg_sum1 =
0.0BlockOffset = 0 ? ? while BlockOffset len(dd):
if dd[BlockOffset + 1] = 10:
avg_sum1 += dd[BlockOffset + 1] * 0.1
else:
avg_sum1 += dd[BlockOffset + 0] * 0.01
BlockOffset += 2print('Avg: ' + str(avg_sum1 / len(dd) / 2)) ? ?print('Exe time: ' +
str(time.clock() - t_start))
擴展資料:
python 實現(xiàn)求和、計數(shù)、最大最小值、平均值、中位數(shù)、標(biāo)準(zhǔn)偏差、百分比。
import?sys
class?Stats:
def?__init__(self, sequence):
# sequence of numbers we will process
# convert all items to floats for numerical processing
self.sequence?=?[float(item)?for?item?in?sequence]
def?sum(self):
if?len(self.sequence) ?1:
return?None
else:
return?sum(self.sequence)
def?count(self):
return?len(self.sequence)
def?min(self):
if?len(self.sequence) ?1:
return?None
else:
return?min(self.sequence)
def?max(self):
if?len(self.sequence) ?1:
return?None
else:
return?max(self.sequence)
def?avg(self):
if?len(self.sequence) ?1:
return?None
else:
return?sum(self.sequence)?/?len(self.sequence)?
def?median(self):
if?len(self.sequence) ?1:
return?None
else:
self.sequence.sort()
return?self.sequence[len(self.sequence)?//?2]
def?stdev(self):
if?len(self.sequence) ?1:
return?None
else:
avg?=?self.avg()
sdsq?=?sum([(i?-?avg)?**?2?for?i?in?self.sequence])
stdev?=?(sdsq?/?(len(self.sequence)?-?1))?**?.5
return?stdev
def?percentile(self, percentile):
if?len(self.sequence) ?1:
value?=?None
elif?(percentile =?100):
sys.stderr.write('ERROR: percentile must be 100.? you supplied: %s\n'%?percentile)
value?=?None
else:
element_idx?=?int(len(self.sequence)?*?(percentile?/?100.0))
self.sequence.sort()
value?=?self.sequence[element_idx]
return?value
參考資料來源:百度百科-python
函數(shù)體:
numpy.mean(a, axis=None, dtype=None, out=None, keepdims=??class 'numpy._globals._NoValue')[source]
功能:
計算指定軸的 算術(shù)平均值 。
返回數(shù)組元素的平均值。默認(rèn)的情況下,求均值的操作在平展開來的數(shù)組上進行,否則就在指定的軸上。
參數(shù):
①a:必須是數(shù)組。
②axis:默認(rèn)條件下是flatten的array,可以指定相應(yīng)的軸。
如果是二維矩陣,axis=0返回縱軸的平均值,axis=1返回橫軸的平均值。
例子如下:
注意 (關(guān)于精度):
算術(shù)平均值是沿軸的元素總和除以元素的數(shù)量。既然是除法,就涉及到一個精確度的問題。
對于浮點輸入,平均值的計算使用與輸入相同的精度計算,這可能會導(dǎo)致結(jié)果不準(zhǔn)確,特別是對于float32來說。為了緩解這個問題,我們可以使用dtype關(guān)鍵字指定更高精度的累加器。
具體看下面這個例程: