2016-06-15 136 views
-4

所以我打算打印一個名單和年齡的列表,每個列表在一個單獨的行,然後顯示他們的平均年齡,我需要一些幫助。 這就是我到目前爲止:打印一個名字和年齡的列表,並顯示他們的平均年齡

namn = ["Lena", 22, "Jonas", 26, "Anna", 27, "Kalle", 23, "Erik", 30, "Josefine", 20, "Emelie", 32, "Johanna", 29, 
    "Peter", 19] 
+0

幫助什麼? – Maroun

+1

向我們展示您到目前爲止所嘗試的代碼,而不僅僅是列表的聲明。 –

回答

0

這也適用於:

pairs = dict([tuple(namn[i:i+2]) for i in range(0, len(namn), 2)]) 
for name, age in sorted(pairs.items()): 
    print("%s: %d" % (name, age)) 

avg_age = sum(pairs.values())/ len(pairs) 
print("Average Age: %f" % (avg_age)) 

輸出:

Anna: 27 
Emelie: 32 
Erik: 30 
Johanna: 29 
Jonas: 26 
Josefine: 20 
Kalle: 23 
Lena: 22 
Peter: 19 
Average Age: 25.333333 

您還可以通過擴展這個在中排序名稱字母順序也是如此。

+0

在Python 2中,您的代碼無法正確計算平均值。事實上,它會輸出''平均年齡:25.000000'',因爲在Python 2中運算符''/''執行整數除法。 – Tonechas

+0

是的,我用python 3寫了這個,OP沒有指定。 – RoadRunner

0

您必須先創建一個字典。 Here`s代碼

def name_age(namn): 
    dic = {} 
    age = 0 
    for n in range(0, len(namn), 2): 
     dic[namn[n]] = namn[n+1] 
    for i in dic: 
     print i, dic[i] 
     age = age + dic[i] 
    avg_age = age/len(dic) 
    return avg_age 
0

這應該工作:

data = {name: age for name, age in zip(namn[0::2], namn[1::2])} 
for name, age in data.iteritems(): 
    print '%11s: %d' % (name, age) 
print 'Average age: %f' % (sum(data.values())/float(len(data)))