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
添加回答
舉報