#python #arrays #python-3.x #iteration
#python #массивы #python-3.x #итерация
Вопрос:
Предполагается, что программа вычисляет и распечатывает средний процент данного учащегося.
К сожалению, я могу распечатать только средний процент последнего имени учащегося в массиве. Я хочу знать, где именно я ошибаюсь в своем кодировании. Спасибо. Вот мой код ниже.
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 amp; marks').split() #enter name amp; 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. Вам нужно заменить ‘name = str (name_marks [0])’ на ‘name = averagepercentage (name_marks)’
Ответ №1:
В вашем первом цикле:
for i in range(N):
name_marks = input('name amp; marks').split() #enter name amp; 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 amp; marks').split() #enter name amp; 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])
Комментарии:
1. О, вау, спасибо!!! все это время я не осознавал, что поместил свою функцию averagepercentage() не в то место. ваш ответ очень информативен. Спасибо!!!