2016-09-30 90 views
0

該程序應該計算並打印出給定學生的平均百分比。打印數組中學生的平均百分比

不幸的是,我只能打印出數組中最後一個學生姓名的平均百分比。 我想知道我的編碼錯誤在哪裏。 謝謝。下面是我的代碼。

def averagepercentage(): 

    scores = int(name_marks[1]),int(name_marks[2]),int(name_marks[3]) 
    ap = sum(scores)/3 

    return ap 

N = int(input('Number of students: ')) # total number of students 
marks = int() 
arr = [] 

for i in range(N): 
    name_marks = input('name & marks').split() #enter name & three different scores 
    name = str(name_marks[0]) 
    arr.append(name) 
    print(arr) 

student_name = str(input('student_name')) 
for x in arr: 
    if student_name in x: 

     print (x) 

     print("%.2f" %averagepercentage()) 
+0

您需要更換的名字= STR(name_marks [0])「與 'NAME = averagepercentage(name_marks)' –

回答

0

在你的第一個循環:

for i in range(N): 
    name_marks = input('name & marks').split() #enter name & three different scores 
    name = str(name_marks[0]) 
    arr.append(name) 
    print(arr) 

你不存儲往屆生的痕跡,你從你輸入你的替代變量name_marks由過去的痕跡

if student_name in x:外觀如果x中包含student_name,但這不完全符合您的要求,請考慮執行if student_name == x:

然後:

def averagepercentage(): 

    scores = int(name_marks[1]),int(name_marks[2]),int(name_marks[3]) 
    ap = sum(scores)/3 

    return ap 

着眼於全局變量name_marks計算平均,但這個變量只包含(因爲我的第一句話)

你能做什麼,最後學生的價值,以讓大部分的代碼結構爲:

for i in range(N): 
    name_marks = input('name & marks').split() #enter name & three different scores 
    name = str(name_marks[0]) 
    arr.append((name,averagepercentage())) 
    print(arr) 

student_name = str(input('student_name')) 

for x in arr: 
    if student_name in x: 
     print ("student :" + x[0]) 
     print("average :" + x[1]) 
+0

哦,哇謝謝!所有這一次我沒有意識到我把我的函數averagepercentage()放在一個錯誤的地方。你的回答非常豐富。謝謝!!! – Komz