當我的程式通過 for 回圈時,我需要最后的提示來包含迄今為止平均最高的學生的姓名并顯示該平均值。因為我的代碼現在顯示了迄今為止最高的平均值,但學生的名字一直在變化。如何獲得最高平均值以與串列中的適當名稱保持關聯?
students = ["Kenny", "Irvin", "Ezra", "Joe"]
highest = []
for student in students:
print(student, ", input your 3 grades:")
D = int(input("Discussion: "))
Q = int(input("Quiz: "))
A = int(input("Assignment: "))
wg1 = D * (.20)
wg2 = Q * (.30)
wg3 = A * (.50)
WeightGrade = wg1 wg2 wg3
highest.append(WeightGrade)
print("The average grade for " ,student, " is:", WeightGrade)
print('\n')
max_highest = max(highest)
if highest is None:
print("nothing")
else:
print("The student with the highest grade is:" ,student, "with a"\
,max_highest, "average.")
print('\n')
uj5u.com熱心網友回復:
將您的串列名稱從 更改highest為grades- 它包含所有等級,而不僅僅是最高等級!然后改變:
highest.append(WeightGrade)
到:
grades.append((WeightGrade, student))
現在grades是一個(grade, student)元組串列。這意味著你可以這樣做:
highest_grade, best_student = max(grades)
print(f"The student with the highest grade is: {best_student} with a {highest_grade} average.\n")
請注意,在這種情況下無法max退貨None,因此像這樣的檢查if highest is None:毫無用處。
uj5u.com熱心網友回復:
首先,您的變數名稱應該反映變數所代表的內容。在這種情況下,highest是一個壞名字,因為該串列包含所有等級,所以只需呼叫它grades。
接下來,要找到 N 個數中的最大值,不必每次給定一個新數時都計算最大值!相反,您希望在計算最大值之前獲得所有這些,所以這樣做 - 在回圈中,只需附加WeightGrade到grades.
students = ["Kenny", "Irvin", "Ezra", "Joe"]
grades = []
for student in students:
print(student, ", input your 3 grades:")
D = int(input("Discussion: "))
Q = int(input("Quiz: "))
A = int(input("Assignment: "))
wg1 = D * (.20)
wg2 = Q * (.30)
wg3 = A * (.50)
WeightGrade = wg1 wg2 wg3
grades.append(WeightGrade)
print("The average grade for " ,student, " is:", WeightGrade)
print('\n')
然后,在回圈之外max(),找到該成績的學生和哪些學生:
highest = max(grades)
print("The maximum grade is ", highest)
print("The following students achieved this grade: ")
for student, grade in zip(students, grades):
if highest == grade:
print(student)
通過有一個單獨的回圈來檢查學生的成績是否等于highest,您可以涵蓋多個學生取得最高成績的情況。
uj5u.com熱心網友回復:
您只需要創建一個字典來存盤平均成績最高的學生的姓名。
我使用了一個帶有兩個引數的 max 函式,即平均值字典,它檢查鍵的最大值(這是學生的平均值)。
students = ["Kenny", "Irvin", "Ezra", "Joe"]
averages = {}
for student in students:
print(student, ", input your 3 grades:")
D = int(input("Discussion: "))
Q = int(input("Quiz: "))
A = int(input("Assignment: "))
wg1 = D * (.20)
wg2 = Q * (.30)
wg3 = A * (.50)
WeightGrade = wg1 wg2 wg3
averages[student] = WeightGrade
print("The average grade for " ,student, " is:", WeightGrade)
print('\n')
best_student = max(averages, key=averages.get)
if averages is None:
print("nothing")
else:
print("The student with the averages grade is:" ,best_student, "with a"\
,averages[best_student], "average.")
print('\n')
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/424723.html
