平均值的計算
本人是一枚生物學的學生,由于對生物資訊學特别感興趣,于是想自學生物資訊學(新手莫怪)。了解到生物資訊學要有程式設計基礎,尤其是要會一門程式設計語言,例如:R語言、Python、Perl等,還要熟悉Linux系統,作為生信小白,聽說Python挺簡單的,于是就自學了Python,花了兩天時間了解了Python的基礎文法後,今天想做個練習題試試手(實踐是檢驗真理的唯一标準),下面是練習題:(試題來源:《PYTHON生物資訊學資料管理》)
原題是:假設讀者已經測得 5 個樹突長度,想知道它們的平均值:
原始答案是:
data = [3.53,3.47,3.51,3.72,3.43]
average = sum(data)/len(data)
print(average)
sum()函數将所有清單中的資料加起來,即
>>> sum (data)
17.66
len() 函數給出清單的項數(長度) ,即
>>> len(data)
5
通過使用 len()和 sum() 的組合,就可以計算出任何非空清單的算術平均值,而且不必 在寫程式時知道共有多少項。如果資料包含整數,則其結果将被預設向下取整。 如果偏好 平均值帶小數位,則需要将總和或長度轉換為浮點數:
data = [1 , 2 , 3, 4]
average = float(sum(data)) /len(data)
print (average)
如果除法的其中一項是浮點數,結果就會也是浮點數。
為了使程式能計算使用者輸入的資料,特使用了input()函數,實作使用者自主輸入資料,并計算平均值。廢話少說,上手實踐:
第一步:定義變量
data=[]
定義資料清單data
第二步:擷取使用者輸入
①擷取使用者輸入
使用input()函數擷取使用者輸入
data1 = input("請輸入數值:",)
為了獲得使用者輸入的多個資料,并用“,”将資料分開,使用split()切片隔離資料,該步驟完整代碼如下:
data1 = input("請輸入數值:",).split(',')
②将字元轉化為數值
往往系統預設使用者輸入的是字元,需要将其轉化為數值,是以需要使用eval()函數,将使用者輸入的字元轉化為數值,使用笨方法for循環一下,代碼如下:
i = 0
for i in range(0,len(data1)):
data.append(eval(data1[i]))
i=i+1
第三步:計算公式
使用sum()函數将所有清單中的資料加起來,即sum (data)求和;
使用len() 函數給出清單的項數(長度) ,即 len(data)求輸入的數的個數;
通過使用 len()和 sum() 的組合,就可以計算出任何非空清單的算術平均值,而且不必在寫程式時知道共有多少項。
計算公式如下:
average = sum(data)/len(data)
第四步:輸出結果
将計算的結果列印出來:
print(average)
最後,将更新版的各個步驟的代碼彙總如下:
data=[]
i = 0
data1 = input("請輸入數值:",).split(',')
for i in range(0,len(data1)):
data.append(eval(data1[i]))
i=i+1
average = sum(data)/len(data)
print(average)
雖然是簡單的幾行代碼,就能實作擷取使用者輸入,并計算出使用者輸出的結果。感興趣的蛇友們,還可以加入異常判斷,如果使用者輸入的不是數字而是别的什麼,實作也能使程式運作不報錯,而且能提醒使用者重新輸入資料的功能。
雖然這是個小小的計算程式,但對于初學者的我來說每一次對原代碼的更新改造,哪怕是讀懂後的注釋都感覺是一次進步提升,總之代碼雖小,動手最重要!希望更多學習Python的愛好者不要像我一樣眼高手低,學習程式設計就是要,思考,敲碼,思考,敲碼,敲碼,再敲碼!