Каждый раз, когда вы читаете нового ученика, вы «сбрасываете» highestGrade
и lowestGrade
до их начальных значений (0
и 99
соответственно).
while name != '':
# stuff that happens for each 'name'
highestGrade = [0, 'studentName']
lowestGrade = [99, 'studentName']
# ... do stuff ...
# read new name
name = infile.readline().strip()
Исправьте это легко, инициализируя эти значения вне вашего цикла.
highestGrade = [0, 'studentName']
lowestGrade = [99, 'studentName']
while name != '':
# stuff that happens for each 'name'
Кроме того, ваш lowGrade
метод является излишне сложным и избыточным. Вместо того, чтобы удалять элементы из списка и затем добавлять новые элементы, просто создайте новый список. И на самом деле tuple
будет более подходящим, чем list
, хотя оба будут работать.
lowestGrade = (99, 'studentName')
def lowGrade(x):
if x < lowestGrade[0]:
lowestGrade = (x, name, lastName)
Вам не нужно возвращать tuple
/ list
из этого метода, поскольку вы вообще не используете возвращаемое значение.