Bài 13
Đề bài: Quan ly danh sách học sinh bằng dictionary long nhau.
Moi học sinh là 1 dict gom ten, điểm các mon.
Tính trung bình tung nguoi, xep hang theo trung bình.
Ví dụ:
hoc_sinh = {
"Nam": {"Toan": 8, "Van": 7, "Anh": 9},
"Lan": {"Toan": 9, "Van": 8, "Anh": 7},
"Binh": {"Toan": 6, "Van": 9, "Anh": 8}
}
Kết quả:
Nam: TB = 8.00 => Kha
Lan: TB = 8.00 => Kha
Binh: TB = 7.67 => Kha
Xep hang: 1. Lan(8.00) 2. Nam(8.00) 3. Binh(7.67)
Đăng nhập để giáo viên có thể giao bài và nhận bài nộp của bạn.
Câu trả lời
def xep_loai(tb):
if tb >= 8.0: return "Gioi"
if tb >= 6.5: return "Kha"
if tb >= 5.0: return "Trung binh"
return "Yeu"
hoc_sinh = {}
n = int(input("Nhap so hoc sinh: "))
for _ in range(n):
ten = input(" Ten: ")
toan = float(input(" Diem Toan: "))
van = float(input(" Diem Van: "))
anh = float(input(" Diem Anh: "))
hoc_sinh[ten] = {"Toan": toan, "Van": van, "Anh": anh}
print("\nKet qua:")
trung_binh_all = {}
for ten, diem in hoc_sinh.items():
tb = sum(diem.values()) / len(diem)
trung_binh_all[ten] = tb
print(f" {ten:10}: TB = {tb:.2f} => {xep_loai(tb)}")
xep_hang = sorted(trung_binh_all.items(), key=lambda x: x[1], reverse=True)
print("\nXep hang:")
for i, (ten, tb) in enumerate(xep_hang, 1):
print(f" {i}. {ten} ({tb:.2f})")