打印阵列中学生的平均百分比

时间:2016-09-30 15:19:30

标签: python arrays python-3.x iteration

该程序应该计算并打印出给定学生的平均百分比。

不幸的是,我只能打印出阵列中最后一个学生姓名的平均百分比。 我想知道我的编码在哪里出错了。 谢谢。下面是我的代码。

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())

1 个答案:

答案 0 :(得分: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:查看student_name中是否包含x,这不是您想要做的,请考虑改为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])