该程序应该计算并打印出给定学生的平均百分比。
不幸的是,我只能打印出阵列中最后一个学生姓名的平均百分比。 我想知道我的编码在哪里出错了。 谢谢。下面是我的代码。
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 :(得分: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])