2016-09-30 56 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