2 回答

TA贡献1824条经验 获得超6个赞
每次您阅读一个新学生时,您都将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方法不必要地复杂和冗余。不要从列表中删除项目然后添加新项目,只需创建一个新列表。事实上, atuple比 a 更合适list,尽管两者都可以。
lowestGrade = (99, 'studentName')
def lowGrade(x):
if x < lowestGrade[0]:
lowestGrade = (x, name, lastName)
您不需要从此方法返回tuple/ list,因为您根本不使用返回的值。

TA贡献1797条经验 获得超6个赞
每次找到最低等级时,都会从列表中删除 2 个值并添加 3 个。这意味着永远不会删除第一个值。你能检查一下这对你有用吗?
def lowGrade(x):
if x < lowestGrade[0]:
lowestGrade.pop(0)
lowestGrade.pop(0)
lowestGrade.append(x)
lowestGrade.append(' '.join(name, lastName))
return lowestGrade
添加回答
举报