2016-02-21 91 views
0

我想單獨添加嵌套循環的每一行以便找到平均值。我錯過了一個細節,它可能會或可能不會影響我的整個代碼。代碼應該計算給定排分數的平均值,但會降低最低分數。在python中使用for循環和嵌套列表

def printAverages(): 
scores = [[100,100,1,100,100], 
      [20,50,60,10,30], 
      [0,10,10,0,10], 
      [0,100,50,20,60]] 
total = 0 
minValue = 100 
counter = -1 
for row in scores: 
    counter = counter + 1 
    for n in scores[0]: 
     total = total+n 
     if minValue > n: 
      minValue = n 
    total = total - minValue 
    print("Average for row",counter,"is",total) 
    total = 0 

我如何使它所以for n in score [0]需要,而不是隻計算第一行的平均每行的平均?我知道scores[0]命令程序只讀取第一行,我只是不知道如何改變它。

謝謝

+0

''在n行''而不是''n在分數[0]''是你在找什麼我想。 – septra

回答

0

請記住,XY problem

# Sum of a list of numbers divided by the number of numbers in the list 
def average(numbers): 
    return sum(numbers)/len(numbers) 

# This is your data 
scores = [[100,100,1,100,100], 
      [20,50,60,10,30], 
      [0,10,10,0,10], 
      [0,100,50,20,60]] 

# enumerate() allows you to write FOR loops naming both the list element and its index 
for (i, row) in enumerate(scores): 
    print("Average for row ", i, "is ", average(row)) 

請Python支持函數式編程和鼓勵程序員下定決心寫pure functions可能的情況下!

+0

謝謝你的回答!我目前正在學習一門介紹性的python類,並且我對python中所有可用的函數知之甚少。我還想知道,如果程序要求「無用戶輸入」,這是否意味着分數將不得不手動輸入代碼本身? – George

+0

是的,但你有第三個選項,這可能是非常有趣的:生成隨機數字!內置的隨機庫會很有幫助(你可以在這裏閱讀它(https://docs.python.org/2/library/random.html)) –

+0

順便說一下,你一定會喜歡[這個閱讀](http://codeblog.dhananjaynene.com/2011/06/10-python-one-liners-to-impress-your-friends/),如果你是新來的Python。 –

0

聲明for n in scores[0]:只會經過第一列。

你想說的是for n in row:。這將通過每一行,外環每回路一行

+0

謝謝!這是我正在尋找的。 – George